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

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

问题:将数组型JSON转换为指定键值对对象

需要将如下JSON数组:

[
 {
   "key11": "value11",
   "key12": "value12",
   "key13": "value13",
   "key14": "value14"
 },
 {
   "key21": "value21",
   "key22": "value22",
   "key23": "value23",
   "key24": "value24"
 },
 {
   "key31": "value31",
   "key32": "value32",
   "key33": "value33",
   "key34": "value34"
 }
]

转换为以下单个键值对对象:

{
  "value11": "value12",
  "value21": "value22", 
  "value31": "value32"
}

解决方案:使用JQ命令

可以通过两种简洁的JQ命令实现转换:

方法1:使用reduce遍历合并

jq 'reduce .[] as $item ({}; . + { ($item[($item|keys[0])]): $item[($item|keys[1])] })'

逻辑说明:

  • 用reduce遍历数组中的每个对象$item
  • 初始构建一个空对象{}
  • 对每个对象,取第一个键对应的值作为新键,第二个键对应的值作为新值,合并到结果对象中

方法2:使用map+from_entries

jq 'from_entries(map({key: .[keys[0]], value: .[keys[1]]}))'

逻辑说明:

  • map遍历数组,将每个子对象转换为{key: ..., value: ...}的标准条目结构
  • from_entries将这些条目结构转换为单个键值对对象

以上两种命令均可将输入的JSON数组转换为目标结构,直接在终端或支持JQ的环境中运行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:25:20