C# 将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

我得到了一些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 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
}