list转json树结构
时间: 2023-09-05 16:13:50 浏览: 49
将一个列表转换为 JSON 树结构的方法,可以使用递归函数来实现。
假设我们有以下列表:
```
[
{"id": 1, "name": "node1", "parent_id": null},
{"id": 2, "name": "node2", "parent_id": 1},
{"id": 3, "name": "node3", "parent_id": 1},
{"id": 4, "name": "node4", "parent_id": 3},
{"id": 5, "name": "node5", "parent_id": 2}
]
```
我们可以先定义一个函数来获取指定节点的所有子节点:
```python
def get_children(nodes, parent_id):
return [node for node in nodes if node['parent_id'] == parent_id]
```
然后定义一个递归函数来将节点列表转换为 JSON 树结构:
```python
def list_to_json_tree(nodes, parent_id=None):
children = get_children(nodes, parent_id)
if not children:
return None
tree = []
for child in children:
node = {
'id': child['id'],
'name': child['name'],
'children': list_to_json_tree(nodes, child['id'])
}
tree.append(node)
return tree
```
最后调用这个函数,将列表转换为 JSON 树结构:
```python
import json
nodes = [
{"id": 1, "name": "node1", "parent_id": None},
{"id": 2, "name": "node2", "parent_id": 1},
{"id": 3, "name": "node3", "parent_id": 1},
{"id": 4, "name": "node4", "parent_id": 3},
{"id": 5, "name": "node5", "parent_id": 2}
]
tree = list_to_json_tree(nodes)
json_tree = json.dumps(tree)
print(json_tree)
```
输出结果为:
```json
[{
"id": 1,
"name": "node1",
"children": [{
"id": 2,
"name": "node2",
"children": [{
"id": 5,
"name": "node5",
"children": null
}]
}, {
"id": 3,
"name": "node3",
"children": [{
"id": 4,
"name": "node4",
"children": null
}]
}]
}]
```