如何用Python优雅地打印多层嵌套JSON数据的树状结构?(嵌套.树状.多层.如何用.优雅...)

wufei123 发布于 2025-03-14 阅读(9)

如何用python优雅地打印多层嵌套json数据的树状结构?

本文介绍如何利用Python代码,将任意层级的JSON数据以直观的树状结构打印出来,方便理解和调试复杂的JSON数据。我们将通过示例代码详细讲解实现方法。

目标是遍历多层嵌套的JSON数据,并将其以树状结构呈现,清晰地展现数据层级关系。这需要一个递归算法,能够灵活处理JSON对象(字典)和JSON数组(列表)。

以下Python代码实现了该功能:

import json

def print_json_tree(json_obj, indent=0):
    """递归函数,以树状结构打印JSON数据"""
    if isinstance(json_obj, dict):
        for key, value in json_obj.items():
            print('  ' * indent + f'{key}:') # 使用f-string更简洁
            print_json_tree(value, indent + 1)
    elif isinstance(json_obj, list):
        for i, item in enumerate(json_obj):
            print('  ' * indent + f'[{i}]:')
            print_json_tree(item, indent + 1)
    else:
        print('  ' * indent + str(json_obj))

# 示例JSON数据
json_str = '''
{
  "id":"series","css":"wrapper","html":[
    {"id":"series","css":"header","html":[
        {"css":"topbar","html":[
            {"css":"left","html":[]},
            {"css":"middle","html":[]},
            {"css":"right","html":[]}
        ]},
        {"css":"mask","html":[]},
        {"css":"layer","html":[]}
    ]},
    {"id":"series","css":"container","html":[
        {"id":"series","css":"container ad1200 mt10","html":[]},
        {"id":"series","css":"container crumb","html":[]},
        {"id":"series","css":"container nav","html":[]},
        {"id":"series","css":"series_wrapper","html":[
            {"id":"series","css":"main","html":[
                {"pic":"","total":""},
                {"news1":"","new2":""},
                {"ad1":""},
                {"list":""},
                {"pic":""},
                {"video":""},
                {"ad2":""}
            ]},
            {"id":"series","css":"side","html":[
                {"ad3":"google"},
                {"love":""},
                {"brand":""},
                {"type":""}
            ]}
        ]}
    ]},
    {"position":[
        {"return_top":""},
        {"side_nav":""}
    ]},
    {"footer":[
        {"nav":""}
    ]}
]
}
'''

json_obj = json.loads(json_str)
print_json_tree(json_obj)

这段代码定义了一个递归函数print_json_tree,根据输入对象的类型(字典或列表)进行不同的处理,并使用空格缩进表示层级关系。 代码更简洁地使用了f-string格式化字符串。 运行代码即可得到清晰的JSON数据树状结构输出。

以上就是如何用Python优雅地打印多层嵌套JSON数据的树状结构?的详细内容,更多请关注知识资源分享宝库其它相关文章!

标签:  嵌套 树状 多层 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。