我正在为会计软件开发客户端库。通过HTTP API完成通信,该API返回JSON响应。到目前为止,JSON一直很普通,可以轻松转换为Json.Net解析的类。但是有一个查询,它返回一个非常奇怪的数组-每个数组成员都有一个标题(不重要),并被当作不同的对象(100%相同的成员)对待。上一次我处理它时,我写了一个小助手来删除键,并用[]替换了{},但是我想知道是否可以直接使用Json.NET来正确解析它。
我正在使用最新的稳定的Json.Net,.Net Framework 4.6,并使用JsonConvert.DeserializeObject反序列化。
Json数组,无法解析
{
...
"warehouses": {
"1": {
"warehouseID": 1,
"totalInStock": 0,
...
},
"2": {
"warehouseID": 2,
"totalInStock": 0,
...
},
"3": {
"warehouseID": 3,
"totalInStock": 0,
...
},
"4": {
"warehouseID": 4,
"totalInStock": 0,
...
}
},
...
}
课程
public class MainObject{
...
public List<Warehouse> warehouses { get; set;}
...
}
public class Warehouse{
public int warehouseID { get; set; }
public string totalInStock { get; set; }
...
}
“无法反序列化当前JSON对象(例如{“ name”:“ value”})为类型'System.Collections.Generic.List`1 [Warehouse]',因为该类型需要JSON数组(例如[1, 2,3])正确反序列化。
答案 0 :(得分:8)
那不是数组,而是键值映射。 C#中对应的类为Dictionary<TKey,TValue>
。
重构为以下内容:
public class MainObject{
...
public Dictionary<int, Warehouse> warehouses { get; set;}
...
}