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

如何从动态嵌套数组JSON中提取指定路径下modelTemplates的全部id值

JSON指定路径ID提取实现方案

针对你给出的JSON结构和提取需求,最终可得到的目标数组结果为[1, 2],可通过以下几种主流技术方案实现:

  • 原生嵌套遍历方案(无第三方依赖)

不需要引入任何外部工具库,兼容性最高,适合轻量级项目场景,核心逻辑为三层嵌套遍历跳过空数组即可。
JavaScript实现示例:

// 原JSON数据已解析为data对象
const templateIds = []
data.modelGroups.forEach(group => {
  group.subModelGroups.forEach(subGroup => {
    subGroup.modelTemplates.forEach(tpl => {
      templateIds.push(tpl.id)
    })
  })
})

Python实现示例:

# 原JSON数据已解析为data字典
template_ids = []
for group in data["modelGroups"]:
    for sub_group in group["subModelGroups"]:
        for tpl in sub_group["modelTemplates"]:
            template_ids.append(tpl["id"])
  • JSONPath工具方案(适配动态路径需求)

如果提取路径需要动态配置,或者不想编写多层嵌套逻辑,可以使用专门的JSONPath工具直接匹配你给出的路径表达式。
JavaScript环境使用jsonpath库实现示例:

const jp = require('jsonpath')
const templateIds = jp.query(data, '$.modelGroups[*].subModelGroups[*].modelTemplates[*].id')

Python环境使用jsonpath-ng库实现示例:

from jsonpath_ng import parse
expr = parse('$.modelGroups[*].subModelGroups[*].modelTemplates[*].id')
template_ids = [match.value for match in expr.find(data)]
  • 函数式链式调用方案(代码更简洁)

支持数组高阶方法的开发语言可以用拍平数组的方式简化嵌套逻辑,代码可读性更高。
JavaScript实现示例:

const templateIds = data.modelGroups
  .flatMap(group => group.subModelGroups)
  .flatMap(subGroup => subGroup.modelTemplates)
  .map(tpl => tpl.id)

Python实现示例:

template_ids = [
    tpl["id"]
    for group in data["modelGroups"]
    for sub_group in group["subModelGroups"]
    for tpl in sub_group["modelTemplates"]
]

注意:以上所有方案都会自动跳过空的modelTemplates数组,无需额外做空值兼容判断,不会触发运行异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:54:03