如何从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
相关产品推荐
相关产品推荐

