C# 使用类似数据解析.NET中的嵌套JSON

C# 使用类似数据解析.NET中的嵌套JSON,c#,.net,json,nested,json.net,C#,.net,Json,Nested,Json.net,我调用了一个API,它返回一组JSON。这一个特别是返回一组项目给我。这些项目可以有多个子项目。所有子项目的结构与主项目相同。我似乎找不到任何东西可以告诉我如何解析JSON,以便它在.NET中为我提供某种可用的类,以便我可以在我的网页上显示它 以下是结构(精简,因为原稿很大,并重命名了项目和数字,以便于阅读): 我想让我的班级看起来像(我可能错了)是这样的: 公共类数据 { 公共列表{get;set;} } 公共类项目 { 公共int id{get;set;} 公共字符串名称{get;set;}

我调用了一个API,它返回一组JSON。这一个特别是返回一组项目给我。这些项目可以有多个子项目。所有子项目的结构与主项目相同。我似乎找不到任何东西可以告诉我如何解析JSON,以便它在.NET中为我提供某种可用的类,以便我可以在我的网页上显示它

以下是结构(精简,因为原稿很大,并重命名了项目和数字,以便于阅读):

我想让我的班级看起来像(我可能错了)是这样的:

公共类数据
{
公共列表{get;set;}
}
公共类项目
{
公共int id{get;set;}
公共字符串名称{get;set;}
公共列表子项{get;set;}
}

我使用的是JSON.NET,但我尝试过的任何东西最终都没有做任何事情,或者留下错误,无法构建项目。我在过去使用过JSON.NET,当时有一个定义的结构,但这一个让我陷入了一个循环

你们很接近。问题似乎是
数据
类中的列表没有属性名。我将该属性命名为
data
(以匹配JSON中的属性),然后将该类重命名为对该数据表示的内容有意义的内容。这里我使用
ProjectTree
作为示例

public class ProjectTree
{
    public List<Project> data { get; set; }
}

public class Project
{
    public int id { get; set; }
    public string name { get; set; }
    public List<Project> children { get; set; }
}

小提琴手:

你很接近。问题似乎是
数据
类中的列表没有属性名。我将该属性命名为
data
(以匹配JSON中的属性),然后将该类重命名为对该数据表示的内容有意义的内容。这里我使用
ProjectTree
作为示例

public class ProjectTree
{
    public List<Project> data { get; set; }
}

public class Project
{
    public int id { get; set; }
    public string name { get; set; }
    public List<Project> children { get; set; }
}

小提琴:

你可以建立一种自我关系,例如:

public class Data
{
    public List<Project> data { get; set; }
}

public class Project
{
    public int id { get; set; }
    public string name { get; set; }
    public List<Project> children { get; set; }
}

var _data = JsonConvert.DeserializeObject<Data>(json);
公共类数据
{
公共列表数据{get;set;}
}
公共类项目
{
公共int id{get;set;}
公共字符串名称{get;set;}
公共列表子项{get;set;}
}
var\u data=JsonConvert.DeserializeObject(json);

您可以创建一种自我关系,例如:

public class Data
{
    public List<Project> data { get; set; }
}

public class Project
{
    public int id { get; set; }
    public string name { get; set; }
    public List<Project> children { get; set; }
}

var _data = JsonConvert.DeserializeObject<Data>(json);
公共类数据
{
公共列表数据{get;set;}
}
公共类项目
{
公共int id{get;set;}
公共字符串名称{get;set;}
公共列表子项{get;set;}
}
var\u data=JsonConvert.DeserializeObject(json);
public class Data
{
    public List<Project> data { get; set; }
}

public class Project
{
    public int id { get; set; }
    public string name { get; set; }
    public List<Project> children { get; set; }
}

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