账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    数据格式处理:在指定一个子类的情况下去寻找所有父类,将类listjson转换为类树的json数据
    32
    0

    1.原始数据
    数据结构为一个二维表list存的树:

        [json1,json2...]
        json的格式为:
        {id,name,...deptPreId(树节点)}

    原始数据例子:

     [{"id":1,"deptName":"B","deptFullname":"A_B","deptLevel":2,"deptPreId":2,},
    
         {"id":2,"deptName":"A","deptFullname":null,"deptLevel":1,"deptPreId":null,},
    
         {"id":3,"deptName":"C","deptFullname":null,"deptLevel":3,"deptPreId":1,},
    
        {"id":4,"deptName":"wwxxX","deptFullname":null,"deptLevel":null,"deptPreId":1},
    
         {"id":5,"deptName":"123124124","deptFullname":null,"deptLevel"2,"deptPreId":1}
    
        ];
    

    2.目标数据:

    将其转换为下面目标数据,也是一个类似的树,有树形层次:
    其中如果指定child的list的话如何找到其父和组,并生成相应的树。
    数据格式如下:

      list:[json1,json2]
      json:{json,childList}
      Childlist:[json1,json2]

    目标数据例子:

    data=[
        {"id":2,"deptName":"A","deptFullname":null,"deptLevel":1,"deptPreId":null
        ,
        Child:
          [
            {"id":1,"deptName":"B","deptFullname":"A_B","deptLevel":2,"deptPreId":2,
            Child:
                [
                        
            {"id":3,"deptName":"C","deptFullname":null,"deptLevel":3,"deptPreId":1,}
                ]
             },
            {"id":5,"deptName":"123124124","deptFullname":null,"deptLevel"2,"deptPreId":1}
        ]
    }]

    通过子类去寻找父类会涉及到父类合并的问题,
    比如树形结构:A1->B1->C1,A1->B1->C2,A1->B1->C2->D2,比如我现在要通过list,[D2,C1]去寻找D2,所有的祖辈,当回溯到B1的时候要进行合并,但是C2和D2第几次循环查到C2,D2是不确定的。所以和参考代码给出的解决方法有所区分
    类似问题:通过父类去寻找子类https://segmentfault.com/q/10...

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 一个人一辈子 普通会员 1楼

      假设我们有一个类列表,其中包含子类和父类的关系,它们是以json格式存储的,如下所示:

      json [ {"name": "A", "parent": null}, {"name": "B", "parent": "A"}, {"name": "C", "parent": "B"}, {"name": "D", "parent": "A"}, {"name": "E", "parent": "C"}, {"name": "F", "parent": "D"} ]

      现在我们想要将这个列表转换为以子类为根节点,向上查找所有父类的树形结构。例如,如果我们指定子类"E",则结果应为:

      json { "name": "E", "children": [ { "name": "C", "children": [ { "name": "B", "children": [ { "name": "A", "children": [] } ] } ] } ] }

      以下是一个Python示例来实现这个转换:

      ```python import json

      class_tree = [ {"name": "A", "parent": None}, {"name": "B", "parent": "A"}, {"name": "C", "parent": "B"}, {"name": "D", "parent": "A"}, {"name": "E", "parent": "C"}, {"name": "F", "parent": "D"} ]

      def build_class_hierarchy(cls_name, class_tree): node = next((item for item in class_tree if item["name"] == cls_name), None) if not node: return None

      hierarchy = {"name": node["name"], "children": []}
      parent_name = node["parent"]
      
      while parent_name is not None:
          parent = next((item for item in class_tree if item["name"] == parent_name), None)
          if parent:
              hierarchy["children"].append({"name": parent["name"], "children": []})
              parent_name = parent["parent"]
          else:
              break
      
      return hierarchy
      

      指定子类"E"

      target_cls = "E" result = build_class_hierarchy(target_cls, class_tree)

      print(json.dumps(result, indent=2)) ```

      注意:这个例子中没有对循环引用或者层级过深的情况做处理,实际使用时可能需要根据实际情况进行调整。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部