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

У меня есть эта Pice из JSON строки, как я могу десериализацию его с помощью: JSON.NET http://json.codeplex.com?Deserialize 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

Вы ищете это? 'new System.Web.Script.Serialization. JavaScriptSerializer(). Deserialize (string) '? –

ответ

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 разрисовывается, как в поле result is array. Это не способ легко разобрать его? – Yozer

+0

@Yozer Затем попробуйте решение Dictionary. –

+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