反序列化 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 字符串 - 列表/数组

这个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;
   }
}