我从一个API获取的JSON数据长这样:
{
"Items": {
"Item322A": [{
"prop1": "string",
"prop2": "string",
"prop3": 1,
"prop4": false
},{
"prop1": "string",
"prop2": "string",
"prop3": 0,
"prop4": false
}],
"Item2B": [{
"prop1": "string",
"prop2": "string",
"prop3": 14,
"prop4": true
}]
},
"Errors": ["String"]
}
我已经尝试了几种方法来表示这个JSON在c#的对象中(太多了,无法在此列出)。我已经尝试使用列表和字典,以下是我最近尝试表示它的一个示例:
private class Response
{
public Item Items { get; set; }
public string[] Errors { get; set; }
}
private class Item
{
public List<SubItem> SubItems { get; set; }
}
private class SubItem
{
public List<Info> Infos { get; set; }
}
private class Info
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public int Prop3 { get; set; }
public bool Prop4 { get; set; }
}
这里是我用来反序列化JSON的方法:
using (var sr = new StringReader(responseJSON))
using (var jr = new JsonTextReader(sr))
{
var serial = new JsonSerializer();
serial.Formatting = Formatting.Indented;
var obj = serial.Deserialize<Response>(jr);
}
obj
包含 Items
和 Errors
。而Items
包含SubItems
,但SubItems
是 null
。所以实际上只有Errors
被反序列化了。
这应该很简单,但出于某种原因我无法确定正确的对象表示方法。