解析具有相似数据的 .NET 中的嵌套 JSON
Parse nested JSON in .NET with similar data
我有一个 API,我称它为 return 一组 JSON。这个特别是对我来说 return 的一组项目。这些项目可以有多个子项目。所有子项目的结构都与主项目相同。我似乎找不到任何可以告诉我如何解析 JSON 的内容,以便它在 .NET 中为我提供某种可用的 class,以便我可以在我的网页上显示它。
这是结构(因为原始内容很大,所以进行了压缩,并重命名了项目和编号以使其更易于阅读):
{
"data": [
{
"id": 70000,
"name": "Project 70000",
"children": [
{
"id": 71000,
"name": "Project 71000",
"children": [
{
"id": 71100,
"name": "Project 71100",
"children": [
{
"id": 71110,
"name": "Project 71110",
"children": [
{
"id": 71111,
"name": "Project 71111"
},
{
"id": 71112,
"name": "Project 71112"
}
]
}
]
}
]
}
]
},
{
"id": 80000,
"name": "Project 80000",
"children": [
{
"id": 81000,
"name": "Project 81000"
}
]
}
]
}
我认为我希望我的 class 看起来像(我这里可能是错的)是这样的:
public class data
{
public List<project> { get; set; }
}
public class project
{
public int id { get; set; }
public string name { get; set; }
public List<project> children { get; set; }
}
我正在使用 JSON.NET,但我尝试过的任何事情最终都没有做任何事情,或者给我留下无法构建项目的错误。我过去在定义结构时使用过 JSON.NET,但这个让我陷入困境!
你非常接近。问题似乎是您的 data
class 中的列表没有 属性 名称。我将其命名为 属性 data
(以匹配 JSON 中的 属性),然后将 class 重命名为对该数据有意义的有意义的名称代表。这里我使用 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; }
}
然后,像这样反序列化到您的 ProjectTree
class,它应该可以正常工作:
var root = JsonConvert.DeserializeObject<ProjectTree>(json);
Fiddle: https://dotnetfiddle.net/5gmosp
您可以创建自我关系,例如:
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);
我有一个 API,我称它为 return 一组 JSON。这个特别是对我来说 return 的一组项目。这些项目可以有多个子项目。所有子项目的结构都与主项目相同。我似乎找不到任何可以告诉我如何解析 JSON 的内容,以便它在 .NET 中为我提供某种可用的 class,以便我可以在我的网页上显示它。
这是结构(因为原始内容很大,所以进行了压缩,并重命名了项目和编号以使其更易于阅读):
{
"data": [
{
"id": 70000,
"name": "Project 70000",
"children": [
{
"id": 71000,
"name": "Project 71000",
"children": [
{
"id": 71100,
"name": "Project 71100",
"children": [
{
"id": 71110,
"name": "Project 71110",
"children": [
{
"id": 71111,
"name": "Project 71111"
},
{
"id": 71112,
"name": "Project 71112"
}
]
}
]
}
]
}
]
},
{
"id": 80000,
"name": "Project 80000",
"children": [
{
"id": 81000,
"name": "Project 81000"
}
]
}
]
}
我认为我希望我的 class 看起来像(我这里可能是错的)是这样的:
public class data
{
public List<project> { get; set; }
}
public class project
{
public int id { get; set; }
public string name { get; set; }
public List<project> children { get; set; }
}
我正在使用 JSON.NET,但我尝试过的任何事情最终都没有做任何事情,或者给我留下无法构建项目的错误。我过去在定义结构时使用过 JSON.NET,但这个让我陷入困境!
你非常接近。问题似乎是您的 data
class 中的列表没有 属性 名称。我将其命名为 属性 data
(以匹配 JSON 中的 属性),然后将 class 重命名为对该数据有意义的有意义的名称代表。这里我使用 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; }
}
然后,像这样反序列化到您的 ProjectTree
class,它应该可以正常工作:
var root = JsonConvert.DeserializeObject<ProjectTree>(json);
Fiddle: https://dotnetfiddle.net/5gmosp
您可以创建自我关系,例如:
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);