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

如何用jq从JSON数组提取对应字段避免全连接重复结果?

解决jq提取JSON数组字段时的重复匹配问题

你遇到的问题本质是多次使用.results[]导致了笛卡尔积——每个id都和所有email、doc_number做了组合,所以才会生成8条重复结果,而非期望的2条对应记录。

正确的jq过滤器写法

你需要先遍历results数组中的单个对象,再从这个对象里提取对应字段,而不是让每个字段独立遍历整个数组。正确的过滤器如下:

.results[] | {user: .id, mail: .buyer.email, buyer: .buyer.billing_info.doc_number}

写法原理拆解

  • .results[] 先把数组里的每个对象单独取出(第一次取id=111的对象,第二次取id=222的对象)
  • 接着对每个单独的对象,提取它自身的id、buyer.email和buyer.billing_info.doc_number,这样每个对象只会生成一条匹配记录,不会出现跨对象的无效组合。

最终输出结果

运行上述过滤器后,你会得到预期的2条对应结果:

{"user":111,"mail":"mail1@mail.com","buyer":"123"}
{"user":222,"mail":"mail2@mail.com","buyer":"456"}

内容的提问来源于stack exchange,提问作者Germán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:12:01