Кусок кода, который преобразует иерархические данные из табличного вида (id,parent_id,name) в json.
#!/usr/bin/env python
import pprint
import json
global_data = [(1, None, "Big boss"), (2, 1, "Small boss1"), (3, 1, "Small boss2"), (4, 2, "worker1"), (5, 2, "worker2")]
def get_children(parent_id):
global global_data
return [ i for i in global_data if i[1] == parent_id]
def go(parent_id):
children_data = get_children(parent_id)
result = []
for i in children_data:
resp = go(i[0])
result.append({"name": i[2], "children": resp})
return result
if __name__ == "__main__":
res = go(None)
pprint.pprint(res)
res_json = json.dumps(res)
Результат by jsonlint:
[
{
"name": "Big boss",
"children": [
{
"name": "Small boss1",
"children": [
{
"name": "worker1",
"children": []
},
{
"name": "worker2",
"children": []
}
]
},
{
"name": "Small boss1",
"children": []
}
]
}
]