2013-06-21 104 views
2
{ 
     "id":"123", "result": 
     { 
      "0": { "children_id": "0", "name": "some name" }, 
      "1": { "children_id": "1", "name": "some other name" } 
     } 
    } 

我有JSON字符串的这个PICE,我如何使用反序列化: JSON.NET http://json.codeplex.com反序列化JSON字符串 - 列表/阵列

我想让一些类可以容纳我的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; } 
} 
+0

你在找这个? '新的System.Web.Script.Serialization。 JavaScriptSerializer()。反序列化(字符串)'? –

回答

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; } 
} 
+0

它会容易得多,但我从一个API这样的JSON字符串获得...使用此json在线解析器:http://json.parser.online.fr/我的示例json在结果字段中是parasing像是数组。没有办法以简单的方式解析它? – Yozer

+0

@Yozer然后,尝试词典解决方案。 –

+0

谢谢!它完美的作品。 – Yozer

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; } 
} 
+0

只包含没有解释的代码的答案不是很有用。 – svick

-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; 
    } 
} 
+0

我不明白你想用这个答案说什么。 – svick