tree - 利用python如何将无限分类结构的数据,转换成json格式数据。

 傻要傻到嗨样 发布于 2022-10-25 11:08

id text pid

1 My Documents 0
2 photos 1
3 Friend 2
4 Wife 2
5 Company 2
6 Program Files 1
7 Intel 6
8 Java 6

数据库中是以上结构,如何写段代码生成如下结构的json数据?

[{

"id":1,
"text":"My Documents",
"children":[{
    "id":2,
    "text":"Photos",
    "children":[{
        "id":3,
        "text":"Friend"
    },{
        "id":4,
        "text":"Wife"
    },{
        "id":5,
        "text":"Company"
    }]
},{
    "id":6,
    "text":"Program Files",
    "children":[{
        "id":7,
        "text":"Intel"
    },{
        "id":8,
        "text":"Java",
    }]
}]

}]

1 个回答
  • import json
    source=[
        {"name":"my document","id":1 , "parentid": 0 },
        {"name":"photos","id":2 , "parentid": 1 },
        {"name":"Friend","id":3 , "parentid": 2 },
        {"name":"Wife","id":4 , "parentid": 2 },
        {"name":"Company","id":5 , "parentid": 2 },
        {"name":"Program Files","id":6 , "parentid": 1 },
        {"name":"intel","id":7 , "parentid": 6 },
        {"name":"java","id":8 , "parentid": 6 },
    ]
    
    def getChildren(id=0):
        sz=[]
        for obj in source:
            if obj["parentid"] ==id:
                sz.append({"id":obj["id"],"text":obj["name"],"children":getChildren(obj["id"])})
        return sz
    
    print json.dumps(getChildren())
    [
      {
        "text": "my document",
        "id": 1,
        "children": [
          {
            "text": "photos",
            "id": 2,
            "children": [
              {
                "text": "Friend",
                "id": 3,
                "children": [ ]
              },
              {
                "text": "Wife",
                "id": 4,
                "children ": [ ]
              },
              {
                "text": "Company",
                "id": 5,
                "children": [ ]
              }
            ]
          },
          {
            "text": "Program Files",
            "id": 6,
            "children": [
              {
                "text": "intel",
                "id": 7,
                "children": [ ]
              },
              {
                "text": "java",
                "id ": 8,
                "children": [ ]
              }
            ]
          }
        ]
      }
    ]

    代码比较粗糙,性能不好,主要借鉴下思想吧

    2022-10-26 23:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有