You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何递归遍历嵌套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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:06:03