tree - 利用python如何将无限分类结构的数据,转换成json格式数据。
问题描述
id text pid1 My Documents 02 photos 13 Friend 24 Wife 25 Company 26 Program Files 17 Intel 68 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 jsonsource=[ {'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 szprint 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': [ ] }] } ] }]
代码比较粗糙,性能不好,主要借鉴下思想吧
