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

如何使用JQ将对象数组转换为键值对对象?

使用JQ将对象数组转换为键值对对象

给定输入JSON:

[
  {
    "name": "foo",
    "id": "123"
  },
  {
    "name": "bar",
    "id": "456"
  }
]

期望得到以name为键、id为值的键值对对象:

{
  "foo": "123",
  "bar": "456"
}

这里提供两种简洁的JQ实现方式:

方法一:使用map + from_entries

这是最直观的实现方式,先将数组元素转换为标准key-value结构,再生成目标对象:

jq 'map({key: .name, value: .id}) | from_entries' input.json
  • map({key: .name, value: .id}):遍历数组,把每个对象映射成包含key(对应原对象name字段)和value(对应原对象id字段)的新对象数组。
  • from_entries:JQ内置函数,专门将[{key:..., value:...}, ...]格式的数组转换为键值对对象。

方法二:使用reduce迭代构建

适合需要自定义逻辑的场景,通过迭代数组元素逐步构建目标对象:

jq 'reduce .[] as $item ({}; .[$item.name] = $item.id)' input.json
  • reduce .[] as $item ({}; ...):以空对象{}为初始值,遍历数组中的每个元素$item。
  • .[$item.name] = $item.id:每次迭代时,给当前对象添加一个新的键值对,键为$item.name,值为$item.id,最终合并成目标结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:30:00