如何合并两个 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"
}
]
大多数谷歌搜索都用文件显示它,但我想用变量来做。对文档进行了一些尝试,但我找不到合适的过滤器或函数,或者不确定我的方法是否有意义。
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"
}
]