如果您有一个具有递归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);}
}