如何递归遍历嵌套JSON结构提取指定的title、view-list字段值
递归提取多层嵌套JSON指定字段方法
核心思路
针对层级不固定的嵌套JSON结构,递归逻辑会自动识别节点类型逐层遍历,无需写固定层数的for循环,适配最多10层嵌套的要求。
- 遇到字典类型节点:先检查是否存在
title和view-list两个核心字段,存在就存入结果集,再遍历该字典的所有值继续递归 - 遇到数组类型节点:遍历数组内的每个元素继续递归
- 其他类型节点直接跳过
代码实现(Python示例)
import json def extract_nav_fields(node, result): # 处理字典节点 if isinstance(node, dict): # 提取当前节点目标字段 if "title" in node and "view-list" in node: result.append({ "title": node["title"], "view-list": node["view-list"] }) # 递归遍历字典所有值 for val in node.values(): extract_nav_fields(val, result) # 处理数组节点 elif isinstance(node, list): for item in node: extract_nav_fields(item, result) # 调用方法 if __name__ == "__main__": # 加载本地JSON数据 with open("nav_data.json", "r", encoding="utf-8") as f: json_data = json.load(f) extracted_result = [] # 从navtree根节点开始遍历 extract_nav_fields(json_data.get("navtree", []), extracted_result) # 打印提取结果 for item in extracted_result: print(item)
方案优势
- 适配任意嵌套层级、任意数组字段名的结构,不需要根据嵌套结构调整代码
- 时间复杂度为O(n),n为JSON所有节点总数,遍历效率和手写多层循环一致,无额外性能开销
- 逻辑简洁易维护,新增提取字段只需要修改字典拼接部分即可
内容的提问来源于stack exchange,提问作者Hasunohana
相关产品推荐
相关产品推荐

