2
   {
       "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; }
}
4

3 回答 3

6

这个 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; }
}
于 2013-06-21T17:13:52.247 回答
1
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; }
}
于 2013-06-21T17:14:53.413 回答
-1
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;
   }
}
于 2013-06-21T17:18:18.160 回答