如果您有一个具有递归parentId
节点的JSON数据,并且您需要将其转换为C#实体类,则可以使用以下方法:
- 创建一个类来表示JSON对象的节点,包括它的属性和子节点。
public class Node { public int Id { get; set; } public string Name { get; set; } public int ParentId { get; set; } public List<Node> Children { get; set; } }
- 使用
Newtonsoft.Json
或System.Text.Json
等JSON解析器将JSON数据反序列化为List<Node>
对象。
List<Node> nodes = JsonConvert.DeserializeObject<List<Node>>(json);
3、创建一个方法来将List<Node>
转换为具有递归结构的树形结构
public static List<Node> BuildTree(List<Node> nodes)
{
var lookup = nodes.ToLookup(node => node.ParentId);
Func<int?, List<Node>> build = null;
build = pid =>
lookup[pid]
.Select(node => new Node()
{
Id = node.Id,
Name = node.Name,
ParentId = node.ParentId,
Children = build(node.Id)
})
.ToList();
return build(null);
}
该方法使用LINQ的ToLookup
方法将节点分组为它们的父节点ID,然后使用递归方法来构建树形结构。
- 使用
BuildTree
方法将List<Node>
转换为具有递归结构的树形结构。List<Node> tree = BuildTree(nodes);
现在您可以使用
tree
对象来访问具有递归结构的树形结构,并按照您的需要对其进行处理。请注意,这只是一种处理具有递归
parentId
节点的JSON数据并将其转换为C#实体类的方法。具体实现可能因您的实际需求而异。
c# 遍历递归list
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
public List<Item> Children { get; set; }
}
public static void TraverseItems(List<Item> items)
{
foreach (var item in items)
{
Console.WriteLine(item.Name);
TraverseItems(item.Children);
}
}