在JSON数组中循环并排序i

2024-09-29 23:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将一个JSON数组整理成一个层次结构,这里我的JSON文件从未排序,而是遵循以下结构:

{
  "name":"Folder 2",
  "id":"zRDg",
  "parent":"OY00",
  "type":"folder"
},
{
  "name":"Folder 1",
  "id":"OY00",
  "type":"folder"
},
{
  "name":"Folder 3",
  "id":"ZDE1",
  "type":"folder"
},
{
  "name":"DX00025.jpg",
  "id":"9Xdd",
  "parent":"OY00",
  "type":"jpeg"
}

在这方面:

^{pr2}$

我真的搞不懂,因为我是python新手,我的开始(错误):

^{3}$

这是可以的,但问题是python不正确,folder1/folder/folder3/不适用于此,我需要一个递归函数


Tags: 文件nameidjson层次结构排序type数组
1条回答
网友
1楼 · 发布于 2024-09-29 23:24:15

我的解决方案是这样的:

data = INPUT_LIST

class Item:
    def __init__(self, _id, name, type, parent):
        self._id = _id
        self.name = name
        self.type = type
        self.parent = parent
        self.children = []

    def get_dict(self):
        return {
            'id': self._id,
            'name': self.name,
            'type': self.type,
            'children': [child.get_dict() for child in self.children]
        }


lookup = dict((item['id'], Item(item['id'], item['name'], item['type'], item['parent'] if 'parent' in item else None)) for item in data)

root = []

for _id, item in lookup.items():
    if not item.parent:
        root.append(item)
    else:
        lookup[item.parent].children.append(item)

dict_result = [item.get_dict() for item in root]

相关问题 更多 >

    热门问题