反序列化 JSON 字符串 - 列表/数组
本文关键字:数组 列表 JSON 字符串 反序列化 | 更新日期: 2023-09-27 18:19:29
{
"id":"123", "result":
{
"0": { "children_id": "0", "name": "some name" },
"1": { "children_id": "1", "name": "some other name" }
}
}
我有这一小部分 JSON 字符串,如何使用以下命令反序列化它:JSON.NET http://json.codeplex.com ?
我试图制作一些可以容纳我的 json 对象的类,但我不知道如何保存这个"0"和"1"。
public class Data
{
public string children_id { get; set; }
public string name { get; set; }
}
public class RootObject
{
public string id { get; set; }
public List<Data> result { get; set; }
}
这个JSON看起来设计得很糟糕。如果可以有多个子项,则它应该是一个数组,例如:
{
"id":"123", "result":
[
{ "children_id": "0", "name": "some name" },
{ "children_id": "1", "name": "some other name" }
]
}
如果可以控制 JSON 生成,请进行更改(当前 C# 代码可用于反序列化(。如果你不这样做,你最好将其反序列化为字典,这将使你的RootObject
看起来像这样:
public class RootObject
{
public string id { get; set; }
public Dictionary<int, Data> result { get; set; }
}
public class Data
{
public string id { get; set; }
public string name { get; set; }
}
public class RootObject
{
public string id { get; set; }
public Dictionary<string, Data> result { get; set; }
}
JObject jObject = new JObject();
/* jObject = {
"id":"123", "result":
{
"0": { "children_id": "0", "name": "some name" },
"1": { "children_id": "1", "name": "some other name" }
}
}
*/
foreach(var g in jObject["result"]){
switch(g.Key()){
case 0://do something
break;
}
}