C# 如何在c语言中解析双列表JSON数据#
我通过调用以下格式的服务来获取JSON数据:C# 如何在c语言中解析双列表JSON数据#,c#,json,asp.net-mvc,web-services,C#,Json,Asp.net Mvc,Web Services,我通过调用以下格式的服务来获取JSON数据: [ [ { "AgentStatus": "- Active", "Basement": "None", "BasementType": "", "Baths": "4", "BathsHalf": "1", "Beds": "6" }, [ "372010-1.jpg" ] ], [ { "AgentS
[
[
{
"AgentStatus": "- Active",
"Basement": "None",
"BasementType": "",
"Baths": "4",
"BathsHalf": "1",
"Beds": "6"
},
[
"372010-1.jpg"
]
],
[
{
"AgentStatus": "- Active",
"Basement": "Finished,Full",
"BasementType": "FULL FINISHED",
"Baths": "2",
"BathsHalf": "1",
"Beds": "3"
},
[
"377388-1.jpg",
"377388-2.jpg",
"377388-12.jpg"
]
]
]
为了解析这个JSON,我创建了如下类:
public class RetsProperty
{
public PropertyAttributes PropAttributes { get; set; }
public string[] ImgUrls { get; set; }
}
public class PropertyAttributes
{
public string AgentStatus { get; set; }
public string Basement { get; set; }
public string BasementType { get; set; }
public string Baths { get; set; }
public string BathsHalf { get; set; }
public string Beds { get; set; }
}
我使用了NewtonSoftJSON来反序列化Json数据
var retsPropertyItems = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RetsProperty>>(propertyJsonString);
var retsprPropertyItems=Newtonsoft.Json.JsonConvert.DeserializeObject(propertyJsonString);
但无法解析,返回以下错误:
我认为这是因为我无法正确创建类。
那么我该如何格式化我的类?
或者是否有可能绘制出我的工作方式?
谢谢您的JSON格式非常糟糕,因为它在数组中有数组,而没有属性名。所以你应该仔细分析它 我提出了一个解决方案,它可能不是那么糟糕,也很容易理解(如果我正确理解您的JSON格式的话)。想法是用属性名包装您的JSON,然后解析他的构造 您应该以相同的方式包装您的JSON:
var wrappedText = @"{ ""Prop"": " + propertyJsonString + " }";
然后,您可以使用Newtonsoft Json进行解析:
var jsonData = JObject.Parse(wrappedText);
现在您有了JSON数据,应该手动解析它。我建议你这样做:
List<RetsProperty> RetsProperties = new List<RetsProperty>();
foreach (var prop in jsonData["Prop"])
{
RetsProperties.Add(new RetsProperty
{
ImgUrls = Newtonsoft.Json.JsonConvert.DeserializeObject<string[]>(prop.Last.ToString()),
PropAttributes = Newtonsoft.Json.JsonConvert.DeserializeObject<PropertyAttributes>(prop.First.ToString())
});
};
List retsprroperties=new List();
foreach(jsonData[“prop”]中的var prop)
{
添加(新的RetsProperty)
{
ImgUrls=Newtonsoft.Json.JsonConvert.DeserializeObject(prop.Last.ToString()),
PropAttribute=Newtonsoft.Json.JsonConvert.DeserializeObject(prop.First.ToString())
});
};
您应该了解,只有在最后一个数组中有2个数组项时,it才会起作用。看看
prop.First
和prop.Last
你的JSON格式非常糟糕,因为它在数组中有数组,而没有属性名。所以你应该仔细分析它
我提出了一个解决方案,它可能不是那么糟糕,也很容易理解(如果我正确理解您的JSON格式的话)。想法是用属性名包装您的JSON,然后解析他的构造
您应该以相同的方式包装您的JSON:
var wrappedText = @"{ ""Prop"": " + propertyJsonString + " }";
然后,您可以使用Newtonsoft Json进行解析:
var jsonData = JObject.Parse(wrappedText);
现在您有了JSON数据,应该手动解析它。我建议你这样做:
List<RetsProperty> RetsProperties = new List<RetsProperty>();
foreach (var prop in jsonData["Prop"])
{
RetsProperties.Add(new RetsProperty
{
ImgUrls = Newtonsoft.Json.JsonConvert.DeserializeObject<string[]>(prop.Last.ToString()),
PropAttributes = Newtonsoft.Json.JsonConvert.DeserializeObject<PropertyAttributes>(prop.First.ToString())
});
};
List retsprroperties=new List();
foreach(jsonData[“prop”]中的var prop)
{
添加(新的RetsProperty)
{
ImgUrls=Newtonsoft.Json.JsonConvert.DeserializeObject(prop.Last.ToString()),
PropAttribute=Newtonsoft.Json.JsonConvert.DeserializeObject(prop.First.ToString())
});
};
您应该了解,只有在最后一个数组中有2个数组项时,it才会起作用。看看
prop.First
和prop.Last
首先,您有一个非常奇怪的JSON,但正如您所说,您从外部服务接收它。您可以使用and解析这样的JSON,但是这个方法当然非常依赖于JSON的结构
var retsProperties = JArray.Parse(json)
.Select(item => new RetsProperty
{
PropAttributes = item.First.ToObject<PropertyAttributes>(),
ImgUrls = item.Last.ToObject<string[]>()
})
.ToList();
var retsProperties=JArray.Parse(json)
.选择(项=>new RetsProperty
{
PropAttribute=item.First.ToObject(),
ImgUrls=item.Last.ToObject()
})
.ToList();
首先,您有一个非常奇怪的JSON,但正如您所说,您从外部服务接收它。您可以使用and解析这样的JSON,但是这个方法当然非常依赖于JSON的结构
var retsProperties = JArray.Parse(json)
.Select(item => new RetsProperty
{
PropAttributes = item.First.ToObject<PropertyAttributes>(),
ImgUrls = item.Last.ToObject<string[]>()
})
.ToList();
var retsProperties=JArray.Parse(json)
.选择(项=>new RetsProperty
{
PropAttribute=item.First.ToObject(),
ImgUrls=item.Last.ToObject()
})
.ToList();
这个json应该是retsprroperty
的列表吗?在我看来,json的格式似乎不正确(看起来提供了一个2d对象数组)您有权访问json吗?将内部数组更改为objectNo,我没有任何访问权限。我是从一个服务调用中得到它的。你可能会遇到困难,然后基本上你有一个带有PropertyAttributes
对象的2d数组和一个字符串数组,每个数组中有一个对象([[PropertyAttributes,[strings]],[PropertyAttributes,[strings]]
),这可能仍然可行,这并不像获得一个单一的retsprroperty
列表那么容易。这个json应该是retsprroperty
列表吗?在我看来,json的格式似乎不正确(看起来提供了一个2d对象数组)。您有权访问json吗?将内部数组更改为objectNo,我没有任何访问权限。我是从一个服务调用中得到它的。你可能会遇到困难,然后基本上你有一个带有PropertyAttributes
对象的2d数组和一个字符串数组,每个数组中有一个对象([[PropertyAttributes,[strings]],[PropertyAttributes,[strings]]
),这可能仍然可行,这并不像获得一个RetsProperty