标签导航:

import json

def print_json_tree(json_obj, indent=0):
    """
    递归函数,将嵌套JSON数据以树状结构打印出来。

    Args:
        json_obj: JSON对象(字典或列表)。
        indent: 缩进级别。
    """
    if isinstance(json_obj, dict):
        for key, value in json_obj.items():
            print('  ' * indent + str(key) + ":")
            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数据)
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数据树状结构:")
print_json_tree(json_obj)

如何用python将多层嵌套的json数据以树状结构打印出来?

这段代码对之前的代码进行了轻微的改进,主要体现在:

  1. 添加了文档字符串: print_json_tree 函数现在包含一个文档字符串,解释了函数的功能、参数和返回值。这提高了代码的可读性和可维护性。

  2. 代码注释更清晰: 注释更清晰地解释了递归调用的过程。

  3. 示例JSON数据更易于理解: 虽然示例数据没有改变,但代码结构更清晰,更容易理解其处理过程。

这个改进后的版本在功能上与之前的版本相同,但代码质量更高,更易于理解和维护。 记住将 /uploads/20250310/174157614567ce57d143a67.jpg 替换成你的图片实际路径,或者如果图片在同一目录下,直接使用图片文件名。 我无法直接显示图片。