2014-03-13 5 views
1

Я получил некоторые JSON:десериализации JSON в список

{ 
    "data": { 
    "1001": { 
     "name": "Test name 1" 
    }, 
    "1004": { 
     "name": "Test name 2" 
    }, 
    "1005": { 
     "name": "Test name 3" 
    } 
    } 
} 

Как десериализации это в список, который после того, как десериализации, будет содержать 1001, 1004 и 1005?

Мой код до сих пор:

public class Data 
{ 
    public string name { get; set; } 
} 
public class Object 
{ 
    public Data data { get; set; } 
} 

...

List<string> list = new List<string>(); 
var data = JsonConvert.DeserializeObject<Object>(json); 

foreach (var s in data) 
    list.Add(s); 

Это, однако, не работает.

+0

Что означает «не работает»? – Sayse

+0

, пожалуйста, не создавайте класс под названием «Объект» для вашей собственной безопасности. – Jonesopolis

+0

. Помогает ли какой-либо из связанных с ним ответов? ---------> Похоже, что это довольно релевантный материал –

ответ

2

Попробуйте смоделировать классы в соответствии со структурой JSON:

public class Data 
{ 
    public Dictionary<string, Node> data { get; set; } 
} 

public class Node 
{ 
    public string name { get; set; } 
} 

var result = JsonConvert.DeserializeObject<Data>(json); 

Затем вы можете перебирать пункты:

foreach(var item in result.data) 
{ 
    //do stuff 
} 
0

Ваша модель не соответствует вашему JSON. Ваш JSON говорит, что есть объект с именем «данные», который имеет три свойства с именем «1001», «1004» и «1005», каждый из которых имеет свойство «имя». Ваша модель C# должна быть примерно такой:

public class Data 
{ 
    public Child 1001 { get; set; } 
    public Child 1004 { get; set; } 
    public Child 1005 { get; set; } 
} 
public class Child 
{ 
    public string name{ get; set; } 
} 

Возможно, вам захочется использовать динамический объект.

1

Вы не можете преобразовать его непосредственно в список. Проблема в том, что 1001, 1004 и 1005 являются ключами для ваших объектов. Список не будет содержать числа, но имена внутри него. Это означает, что вы потеряете некоторые данные.

Что вы можете сделать, это использовать словари, а затем перебирать их.

Данные класса должны включать в себя словарь другого типа, можно назвать его именем (так). Имя будет иметь один член, имя строки.

Смежные вопросы