C# 反序列化JSON字符串-列表/数组

C# 反序列化JSON字符串-列表/数组,c#,json,serialization,C#,Json,Serialization,我有一张JSON字符串的图片,如何使用以下命令反序列化它: JSON.NET 我试图创建一些类来保存我的json对象,但我不知道如何保存这个“0”和“1” 公共类数据 { 公共字符串子项\u id{get;set;} 公共字符串名称{get;set;} } 公共类根对象 { 公共字符串id{get;set;} 公共列表结果{get;set;} } 这个JSON看起来设计得很糟糕。如果可以有多个子项,则它应该是一个数组,例如: public class Data { public stri

我有一张JSON字符串的图片,如何使用以下命令反序列化它: JSON.NET

我试图创建一些类来保存我的json对象,但我不知道如何保存这个“0”和“1”

公共类数据
{
公共字符串子项\u id{get;set;}
公共字符串名称{get;set;}
}
公共类根对象
{
公共字符串id{get;set;}
公共列表结果{get;set;}
}

这个JSON看起来设计得很糟糕。如果可以有多个子项,则它应该是一个数组,例如:

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的生成,那么可以更改它(您当前的C#代码可以反序列化)。如果不这样做,最好将其反序列化到字典中,这将使您的
RootObject
如下所示:

{
   "id":"123", "result":
   [
       { "children_id": "0", "name": "some name" },
       { "children_id": "1", "name": "some other name" }
   ]
}
公共类根对象
{
公共字符串id{get;set;}
公共字典结果{get;set;}
}
公共类数据
{
公共字符串id{get;set;}
公共字符串名称{get;set;}
}
公共类根对象
{
公共字符串id{get;set;}
公共字典结果{get;set;}
}

您在找这个吗<代码>新建System.Web.Script.Serialization。JavaScriptSerializer()。。。使用这个json在线解析器:我的示例json类似于结果字段is array中的parasing。用简单的方法解析它是不可能的?@Yozer那么,试试字典解决方案。我不明白你想用这个答案说什么。只包含代码而没有解释的答案不是很有用。
{
   "id":"123", "result":
   [
       { "children_id": "0", "name": "some name" },
       { "children_id": "1", "name": "some other name" }
   ]
}
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;
   }
}