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