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

如何从JSON数组的嵌套结构中提取匹配特定条件的ID字段值

嵌套JSON数组匹配提取ID的实现方案

我们以「提取exp数组内A字段值为PROTECTED的条目对应的ID」为例给出实现代码,你可以根据自身需求修改匹配条件。

Python 实现

import json

# 加载你的JSON数据
json_data = '''
{
  "results": [
    {
      "TAB": "bleu",
      "exp": [
        {
          "A": "NOT_PROTECTED",
          "B": [
            "500",
            "600"
          ],
          "C": false
        }
      ],
      "ID": "000041"
    },
    {
      "TAB": "rouge",
      "exp": [
        {
          "A": "PROTECTED",
          "B": [
            "700",
            "800"
          ],
          "C": true
        }
      ],
      "ID": "000042"
    }
  ]
}
'''
data = json.loads(json_data)

matched_ids = []
for item in data['results']:
    # 遍历exp数组判断匹配条件,可自行修改规则,比如判断B包含某个值、C为True等
    for exp_item in item['exp']:
        if exp_item['A'] == 'PROTECTED':
            matched_ids.append(item['ID'])
            break

print(matched_ids) # 输出结果为 ['000042']

jq 命令行实现

如果是在终端处理JSON文件,用jq工具可以快速完成提取:

# 假设JSON内容存放在data.json文件中,提取A为PROTECTED对应的ID
cat data.json | jq '.results[] | select(any(.exp[]; .A == "PROTECTED")) | .ID'
# 输出结果为 "000042"

如果要匹配B数组包含700的ID,修改判断条件即可:

cat data.json | jq '.results[] | select(any(.exp[]; .B[] == "700")) | .ID'

JavaScript 实现

const data = {
  "results": [
    {
      "TAB": "bleu",
      "exp": [
        {
          "A": "NOT_PROTECTED",
          "B": [
            "500",
            "600"
          ],
          "C": false
        }
      ],
      "ID": "000041"
    },
    {
      "TAB": "rouge",
      "exp": [
        {
          "A": "PROTECTED",
          "B": [
            "700",
            "800"
          ],
          "C": true
        }
      ],
      "ID": "000042"
    }
  ]
}

const matchedIds = data.results.filter(item => 
  item.exp.some(expItem => expItem.A === 'PROTECTED')
).map(item => item.ID)

console.log(matchedIds) // 输出结果为 ['000042']

内容的提问来源于stack exchange,提问作者Mohamed Bouraoui

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:15:06