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': [ ] }] } ] }]
代碼比較粗糙,性能不好,主要借鑒下思想吧
