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

如何使用jq将多键及嵌套数组数据合并为单个对象?

用jq将嵌套数组的键值对合并到顶层单个对象

核心命令

jq '. + reduce .key3[] as $item ({}; {($item.key4): $item.key5})' input.json

示例说明

标准输入JSON(需修正为合法格式,键和字符串值需加双引号)

{
  "key1": "value1",
  "key2": "value2",
  "key3": [
    {"key4": "value3", "key5": "value5"},
    {"key4": "value4", "key5": "value6"},
    {"key4": "valueN", "key5": "valueM"}
  ]
}

执行命令后输出

{
  "key1": "value1",
  "key2": "value2",
  "value3": "value5",
  "value4": "value6",
  "valueN": "valueM"
}

命令拆解

  • .:保留原对象里的顶层键值对(key1、key2)
  • reduce .key3[] as $item ({}; ...):遍历key3数组的每一项,以空对象为初始值,把每个数组项的key4值作为新键、key5值作为对应值,生成一个包含数组键值对的临时对象
  • +:将原对象和临时对象合并,得到包含所有所需键值对的单个对象

注意事项

如果key3数组中存在重复的key4值,后面的项会覆盖前面的对应键值,这是JSON对象的固有特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:36:22