2013-06-21 103 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