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

如何忽略路径从JSON文件中提取所有指定Key对应的值

提取JSON中所有层级的content值解决方案

要提取所有嵌套层级里的content对应值,不管它在哪个层级,你可以用深度遍历的方式,或者借助专门的JSON查询工具,下面是两种常用语言的实现方案:

Python 实现

方法1:递归遍历(无需额外依赖)

自己写递归函数,遍历JSON里的所有字典和列表,遇到content键就把对应值收集起来:

def extract_contents(data):
    contents = []
    if isinstance(data, dict):
        # 检查当前字典是否有content键
        if 'content' in data:
            contents.append(data['content'])
        # 递归遍历字典里的每个值
        for value in data.values():
            contents.extend(extract_contents(value))
    elif isinstance(data, list):
        # 递归遍历列表里的每个元素
        for item in data:
            contents.extend(extract_contents(item))
    return contents

# 你的JSON数据
json_data = {
  "body": [
    {
      "content": "abcd"
    },
    {
      "content": "test"
    },
    {
      "paragraph": {
        "content": "ok"
      }
    }
  ]
}

# 调用函数提取结果
result = extract_contents(json_data)
print(result)  # 输出: ['abcd', 'test', 'ok']

方法2:用jsonpath-ng库(更简洁)

先安装依赖:pip install jsonpath-ng,然后用JSONPath表达式直接匹配所有content键的值:

from jsonpath_ng import parse

json_data = {
  "body": [
    {
      "content": "abcd"
    },
    {
      "content": "test"
    },
    {
      "paragraph": {
        "content": "ok"
      }
    }
  ]
}

# 匹配所有层级的content键
jsonpath_expr = parse('$..content')
result = [match.value for match in jsonpath_expr.find(json_data)]
print(result)  # 输出: ['abcd', 'test', 'ok']

JavaScript 实现

方法1:递归遍历(原生JS)

function extractContents(data) {
    let contents = [];
    if (typeof data === 'object' && data !== null) {
        if ('content' in data) {
            contents.push(data.content);
        }
        // 遍历对象或数组的每一项
        for (const key in data) {
            contents = contents.concat(extractContents(data[key]));
        }
    }
    return contents;
}

// 你的JSON数据
const jsonData = {
  "body": [
    {
      "content": "abcd"
    },
    {
      "content": "test"
    },
    {
      "paragraph": {
        "content": "ok"
      }
    }
  ]
};

// 调用函数
const result = extractContents(jsonData);
console.log(result); // 输出: ['abcd', 'test', 'ok']

方法2:用jsonpath库

先安装依赖:npm install jsonpath,然后用表达式提取:

const jsonpath = require('jsonpath');

const jsonData = {
  "body": [
    {
      "content": "abcd"
    },
    {
      "content": "test"
    },
    {
      "paragraph": {
        "content": "ok"
      }
    }
  ]
};

const result = jsonpath.query(jsonData, '$..content');
console.log(result); // 输出: ['abcd', 'test', 'ok']

内容的提问来源于stack exchange,提问作者Will Miles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:05:49