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

发布于 2025-01-28 02:04:56 字数 680 浏览 3 评论 0原文

大多数谷歌搜索显示了文件,但我想使用变量来完成。在文档中尝试了一些事情,但我找不到正确的过滤器或功能,或者不确定我的方法是否有意义。

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个较长的对象,

错误的。

如果我使用*| =它给出了错误,我是 甚至不确定是我需要的过滤器还是内置功能(地图似乎没有这样做)

Most of the googling shows it with files but I want to do it with variables. Tried a few things with the documentation but I can't find the right filter or function or not sure If my approach even makes sense.

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"}
]'

The result I want is

'[
{"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"}
]'

If i use

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

it just makes a bigger array with all 6 objects, not 3 longer ones

If I use * or |= it gives errors

I'm not even sure if it's a filter I need or a builtin function (map doesn't seem to be doing this)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

若水般的淡然安静女子 2025-02-04 02:04:56

使用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"
  }
]

Use transpose to align the elements from both input arrays, then add to combine both sides:

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"
  }
]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文