关键词搜索

源码搜索 ×
×

json 中有递归parentId节点转 c#实体类时如何处理

发布2023-04-28浏览736次

详情内容

如果您有一个具有递归parentId节点的JSON数据,并且您需要将其转换为C#实体类,则可以使用以下方法:

  1. 创建一个类来表示JSON对象的节点,包括它的属性和子节点。
    1. public class Node
    2. {
    3. public int Id { get; set; }
    4. public string Name { get; set; }
    5. public int ParentId { get; set; }
    6. public List<Node> Children { get; set; }
    7. }

  2. 使用Newtonsoft.JsonSystem.Text.Json等JSON解析器将JSON数据反序列化为List<Node>对象。
List<Node> nodes = JsonConvert.DeserializeObject<List<Node>>(json);

3、创建一个方法来将List<Node>转换为具有递归结构的树形结构

  1. public static List<Node> BuildTree(List<Node> nodes)
  2. {
  3. var lookup = nodes.ToLookup(node => node.ParentId);
  4. Func<int?, List<Node>> build = null;
  5. build = pid =>
  6. lookup[pid]
  7. .Select(node => new Node()
  8. {
  9. Id = node.Id,
  10. Name = node.Name,
  11. ParentId = node.ParentId,
  12. Children = build(node.Id)
  13. })
  14. .ToList();
  15. return build(null);
  16. }

该方法使用LINQToLookup方法将节点分组为它们的父节点ID,然后使用递归方法来构建树形结构。

  1. 使用BuildTree方法将List<Node>转换为具有递归结构的树形结构。
    List<Node> tree = BuildTree(nodes);
    

    现在您可以使用tree对象来访问具有递归结构的树形结构,并按照您的需要对其进行处理。

    请注意,这只是一种处理具有递归parentId节点的JSON数据并将其转换为C#实体类的方法。具体实现可能因您的实际需求而异。

c# 遍历递归list

  1. public class Item
  2. {
  3. public int Id { get; set; }
  4. public string Name { get; set; }
  5. public List<Item> Children { get; set; }
  6. }
  7. public static void TraverseItems(List<Item> items)
  8. {
  9. foreach (var item in items)
  10. {
  11. Console.WriteLine(item.Name);
  12. TraverseItems(item.Children);
  13. }
  14. }

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载