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

如何从嵌套JSON中提取指定字段值并赋值?附解析逻辑

嵌套JSON解析提取字段方案

解析逻辑详解

咱们像剥洋葱一样,一层一层拆解这个嵌套JSON的结构:

  1. 找入口:整个JSON是一个对象,核心目标数据藏在customFields数组里,第一步先拿到这个数组。
  2. 定位目标分组:在customFields里,找name为"Cases"(或者fieldId为1111111)的元素——所有包含AAAA、BBBB的case数据都在这里面。
  3. 拆Case数组:这个目标元素的values是个二维数组(数组套数组),每个子数组里装着一个单独的Case对象。
  4. 提目标字段:每个Case对象的values数组里,有一个包含AAAA和BBBB的对象,直接从中取出这两个字段的值,分别存入对应的列表即可。

代码实现(Python)

先把JSON转成Python字典,再按上面的逻辑提取:

# 原始JSON数据转成Python字典
data = {
    "id": 1234,
    "name": "xxxx",
    "description": "XXXXY",
    "descriptionFormat": "XZXZ",
    "children": [],
    "customFields": [
        {"fieldId": 1111,"name": "dert","values": [{"id": 45,"name": "est","type": "erence"}],"type": "alue"},
        {"fieldId": 1114,"name": "name_pe","values": [{"id": 423255,"name": "CN","type": "eference","referenceData": {"ropagation": "ATE"},"euse": false}],"type": "alue"},
        {"fieldId": 1111111,"name": "Cases","values": [
            [{"fieldId": 111121,"name": "Case","values": [{"AAAA": 9090,"BBBB": "MONACO","ype": "eference","referenceData": {"ropagation": "ATE"},"euse": false}],"ames": [],"type": "alue"}],
            [{"fieldId": 111122,"name": "Case","values": [{"AAAA": 9091,"BBBB": "NICE","ype": "eference","ata": {"ropagation": "ATE"},"euse": false}],"ames": [],"ype": "alue"}]
        ]}
    ]
}

# 初始化结果列表
List_AAAA = []
List_BBBB = []

# 1. 遍历customFields,找到Cases分组
for field in data['customFields']:
    if field['name'] == 'Cases':
        # 2. 遍历Cases下的二维values数组
        for case_group in field['values']:
            # 每个case_group是一个数组,取出里面的Case对象
            case_obj = case_group[0]
            # 3. 从Case对象的values里取出目标数据
            target_data = case_obj['values'][0]
            # 4. 提取字段并添加到列表
            List_AAAA.append(target_data['AAAA'])
            List_BBBB.append(target_data['BBBB'])
        break  # 找到目标分组后停止遍历

# 输出结果
print("List_AAAA =", List_AAAA)  # 输出:List_AAAA = [9090, 9091]
print("List_BBBB =", List_BBBB)  # 输出:List_BBBB = ['MONACO', 'NICE']

关键细节说明

  • 用name == 'Cases'定位更稳妥,因为fieldId可能随业务调整,但业务名称Cases一般不会变;当然用fieldId == 1111111也能定位,按需选择。
  • 处理二维数组时,field['values']是[[case1], [case2]]的结构,所以要先遍历外层数组,再取每个子数组的第一个元素(每个子数组里只有一个Case对象)。
  • 如果怕数据结构异常,可加容错判断(比如if 'values' in case_obj),避免出现KeyError;如果数据结构固定,这一步可以省略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:50:34