我通过调用格式为:
的服务来获取JSON数据[
[
{
"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; }
}
我已经使用Newtonsoft Json反序列化JSON数据
var retsPropertyItems = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RetsProperty>>(propertyJsonString);
但它无法解析它返回错误:
我认为这是因为我无法正确创建课程。
那我该如何格式化我的课程呢? 或者是否可以按照我的方式进行映射?
由于
答案 0 :(得分:2)
你的格式很糟糕 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())
});
};
您应该明白,只有在最后一个数组中有2个数组项时,才会起作用。请查看prop.First
和prop.Last
。
答案 1 :(得分:2)