如何合并两个 JSON 数组变量?

How to merge two JSON array variables?

大多数谷歌搜索都用文件显示它,但我想用变量来做。对文档进行了一些尝试,但我找不到合适的过滤器或函数,或者不确定我的方法是否有意义。

var1='[
{"a":"1","b":"2","c":"3"},
{"a":"4","b":"5","c":"6"},
{"a":"7","b":"8","c":"9"}
]'

var2='[
{"d":"x","e":"y"},
{"d":"z","e":"q"},
{"d":"w","e":"v"}
]'

我想要的结果是

'[
{"a":"1","b":"2","c":"3","d":"x","e":"y"},
{"a":"4","b":"5","c":"6","d":"z","e":"q"},
{"a":"7","b":"8","c":"9","d":"w","e":"v"}
]'

如果我使用

jq -n --argjson var1 "$var1" --argjson var2 "$var2" '$var1 + $var2'

它只是用所有 6 个对象创建一个更大的数组,而不是 3 个更长的对象

如果我使用 *|= 它会出错

我什至不确定它是我需要的过滤器还是内置函数(地图似乎没有这样做)

使用transpose对齐两个输入数组中的元素,然后add合并两边:

jq -n --argjson var1 "$var1" --argjson var2 "$var2" '
  [$var1, $var2] | [transpose[] | add]
'
[
  {
    "a": "1",
    "b": "2",
    "c": "3",
    "d": "x",
    "e": "y"
  },
  {
    "a": "4",
    "b": "5",
    "c": "6",
    "d": "z",
    "e": "q"
  },
  {
    "a": "7",
    "b": "8",
    "c": "9",
    "d": "w",
    "e": "v"
  }
]