C# 将JSON反序列化到列表中
我得到了一些JSON:C# 将JSON反序列化到列表中,c#,json,deserialization,C#,Json,Deserialization,我得到了一些JSON: { "data": { "1001": { "name": "Test name 1" }, "1004": { "name": "Test name 2" }, "1005": { "name": "Test name 3" } } } 如何将其反序列化为一个列表,一旦反序列化,该列表将包含1001、1004和1005 到目前为止,我的代码是: public class Dat
{
"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 List=新列表();
var data=JsonConvert.DeserializeObject(json);
foreach(数据中的var s)
列表。添加(s);
但是,这不起作用。您的模型与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; }
}
你可能想考虑使用一个动态对象。
尝试根据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);
不能将其直接转换为列表。问题是1001、1004和1005是对象的键。列表不会包含数字,而是其中的名称。这意味着您将丢失一些数据 你能做的就是使用字典,然后迭代这些字典
类数据应该包括另一种类型的字典,我们称它为Name(so)。Name将有一个成员,字符串Name。什么是“不工作”意思?为了您自己的安全,请不要创建名为
Object
的类。请执行那边的任何相关答案帮助?----------->似乎相当相关stuff@SayseOP应该更具体,但在这种情况下,它是非常明显的。它无法编译,因为他试图迭代对象的一个实例
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
}