小石头723 2018-05-04 10:45 采纳率: 100%
浏览 1272
已采纳

使用Python或Java解析Json文件,逐级打印菜单

有这样一个菜单json文件:
{"id":"100"
"name":"File"
"parent":"#",

"id":"200"
"name":"Edit"
"parent":"#",

"id":"300"
"name":"Search"
"parent":"#",

"id":"400"
"name":"Project"
"parent":"#",

"id":"500"
"name":"Help"
"parent":"#",

"id":"101"
"name":"New"
"parent":"100",

"id":"102"
"name":"Open"
"parent":"100",

"id":"103"
"name":"Load"
"parent":"100",

"id":"201"
"name":"Cut"
"parent":"200",

"id":"202"
"name":"Copy"
"parent":"200",

"id":"203"
"name":"Paste"
"parent":"200",

"id":"301"
"name":"Back"
"parent":"300",

"id":"302"
"name":"Replace"
"parent":"300",

"id":"303"
"name":"Jump"
"parent":"300",

"id":"401"
"name":"Add"
"parent":"400",

"id":"402"
"name":"Remove"
"parent":"400",

"id":"403"
"name":"Close"
"parent":"400",

"id":"501"
"name":"Mode"
"parent":"500",

"id":"502"
"name":"Key"
"parent":"500",

"id":"503"
"name":"About"
"parent":"500",

"id":"1011"
"name":"xx"
"parent":"101",

"id":"2011"
"name":"yy"
"parent":"201",

"id":"3011"
"name":"zz"
"parent":"301",
}

想要打印出如下结果:

100 File 100 File
101 New 100>101 File>New
1011 xx 100>101>1011 File>New>xx
102 Open 100>102 File>Open
103 Load 100>103 File>Load
200 Edit 200 Edit
201 Cut 200>201 Edit>Cut
2011 yy 200>201>2011 Edit>Cut>yy
202 Copy 200>202 Edit>Copy
203 Paste 200>203 Edit>Paste
300 Search 300 Search
301 Back 300>301 Search>Back
3011 zz 300>301>3011 Search>Back>zz
302 Replace 300>302 Search>Replace
303 Jump 300>303 Search>Jump
400 Project 400 Project
401 Add 400>401 Project>Add
402 Remove 400>402 Project>Remove
403 Close 400>403 Project>Close
500 Help 500 Help
501 Mode 500>501 Help>Mode
502 Key 500>502 Help>Key
503 About 500>503 Help>About

想要得出如下结果:
属性Parent如果为#时,说明这是一个根节点,直接打印,打印格式为 ID+Name+ID+Name
属性Parent如果非#时,则需要找到父节点的ID和Name,打印格式为 ID+Name+Parent ID>ID+Parent Name>Name
如果父节点也不是一个根节点,打印格式为 ID+Name+根节点ID>Parent ID>ID+根节点Name>Parent Name>Name,以此类推。当菜单层级非常多时,此处判断如何写一个递归算法,逐级找到某节点的所有父节点。

  • 写回答

2条回答

  • devmiao 2018-05-04 14:13
    关注
     python 递归解析json
    
    import json
    def parse(js):
        for key in js.keys():
            if isinstance(js.get(key),dict):
                parse(js.get(key))
            elif isinstance(js.get(key),list):
                parse(js.get(key))
            else:
                print 'key:%s->value:%s'%(key,js.get(key))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题