如何用 python 深入遍历 json 结构,按树结构打印?
在处理复杂多层的 json 数据时,按层次结构打印其内容会更有条理和可读性。
问题:
本文提供了一个 json 结构,需要将其所有节点深度遍历并按树结构打印出来。
立即学习“Python免费学习笔记(深入)”;
答案:
为了实现嵌套 json 数据的树状打印,我们可以使用 python 的递归方法:
def print_json_tree(json_obj, indent=0): if isinstance(json_obj, dict): for key, value in json_obj.items(): print('-' * indent + str(key)) print_json_tree(value, indent+2) elif isinstance(json_obj, list): for item in json_obj: print_json_tree(item, indent+2) else: print('-' * indent + str(json_obj))
这种方法会逐层递归遍历 json 对象,并将每个键值对或列表元素打印为缩进的字符串。通过指定缩进参数,我们可以控制树状打印的层次结构。
示例:
使用示例 json 结构:
{ "id": "series", "css": "wrapper", "html": [ { "id": "series", "css": "header", "html": [ { "css": "topbar", "html": [] }, { "css": "mask", "html": [] }, { "css": "layer", "html": [] } ] }, { "id": "series", "css": "container", "html": [] }, { "position": [] }, { "footer": [] } ] }
输出结果:
-id --series -css --wrapper -html --0 ---id ----series ---css ----header ---html ----0 -----css ------topbar -----html -------"" ----1 -----css ------mask -----html -------"" ----2 -----css ------layer -----html -------"" --1 ---id ----series ---css ----container ---html -------"" --2 ---position -------"" --3 ---footer -------""