You need to enable JavaScript to run this app. 能否仅使用JSONPath从嵌套JSON中按顺序提取name与对应otherid属性
优惠活动
大模型
产品
解决方案
定价
更多

能否仅使用JSONPath从嵌套JSON中按顺序提取name与对应otherid属性

结论

仅靠通用标准JSONPath语法,无法直接输出你需要的指定顺序结果

为什么原生语法做不到

标准JSONPath本质是路径匹配查询语言,核心规则是「匹配所有符合路径规则的节点,按照JSON文档本身从上到下、从左到右的遍历顺序,统一汇总为一个数组返回」,本身不支持按父节点分组、自定义交错拼接输出顺序的能力:

  • 查询$[*].name会返回所有顶层对象的name值组成的数组:["noot", "doot"],所有name会被集中放在数组开头
  • 查询$[*].things[*].otherid会返回所有嵌套层级下匹配到的otherid值组成的数组:[11,22,33,111,222,333],所有otherid会被集中放在数组后部

两个查询的返回是完全独立的数组,根本无法形成你要的「noot输出后紧跟自身对应的3个otherid,再输出doot、紧跟doot对应的3个otherid」的逐行交错顺序。

可行的实现路径

  • 部分自带扩展后处理能力的非标准JSONPath工具,因为额外加了结果排序、格式化的自定义功能,可能能直接跑出你要的输出效果,但这是工具本身的附加能力,不是JSONPath语法原生支持的特性,换到其他符合通用标准的解析器上就无法生效,不具备跨工具的通用性。
  • 更稳妥的低门槛实现不需要复杂开发,只要用几行极简脚本搭配JSONPath的基础查询能力即可:
    • 用JSONPath取出所有顶层根对象的集合
    • 循环遍历每一个根对象,先输出对象的name字段值
    • 在当前循环内遍历对象下的things数组,逐行输出每个元素的otherid值

整个逻辑总代码量不超过5行,比硬凑非标准JSONPath语法的兼容性强得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 03:54:04