我有一些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 :(得分: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
}
答案 1 :(得分:1)
您无法将其直接转换为列表。问题是1001,1004和1005是对象的键。列表不包含数字,但包含其中的名称。这意味着您将丢失一些数据。
你可以做的是使用字典,然后迭代这些字典。
类数据应包含另一种类型的字典,我们称之为Name(so)。名称将有一个成员,字符串名称。
答案 2 :(得分:0)
您的模型与您的JSON不符。你的JSON说有一个名为'data'的对象有三个名为'1001','1004'和'1005'的属性,每个属性都有一个名为'name'的属性。你的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; }
}
您可能需要考虑使用动态对象。