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

如何使用jq合并两个JSON对象数组生成笛卡尔积结果

实现两个JSON对象数组笛卡尔积的jq方案

你之前使用的jq -s 'transpose | map(add)'逻辑是按索引对位合并元素,仅适合两个数组长度完全相等、需要一一对应合并的场景,无法生成全量组合的笛卡尔积,遇到数组长度不一致时甚至会直接报错。

正确命令

场景1:两个数组分别存储在独立JSON文件中

假设存放foo字段数组的文件为arr1.json,存放bar字段数组的文件为arr2.json,执行以下命令即可得到目标结果:

jq -n '[inputs[0][] as $item1 | inputs[1][] as $item2 | $item1 + $item2]' arr1.json arr2.json

场景2:两个数组已经被合并为一个二维数组传入

如果你的输入是一个长度为2的数组,第一个元素是foo数组、第二个元素是bar数组(比如用-s读取两个文件后的默认输出结构),可以使用以下命令:

jq '[.[0][] as $item1 | .[1][] as $item2 | $item1 + $item2]'

注意:对象合并时如果存在同名字段,后面的对象会覆盖前面的同名字段值,你可以根据自己的字段优先级调整$item1和$item2的相加顺序。

逻辑说明

命令核心是做两层嵌套遍历:

  • 第一层遍历第一个数组的所有对象,暂存为变量
  • 第二层遍历第二个数组的所有对象,和第一层暂存的对象做合并
  • 所有合并结果收集为新数组,就是你需要的笛卡尔积,输出结构完全匹配GitHub Actions矩阵的配置格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:30:55