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

如何使用jq将JSON数组元素合并为单个结果对象?

问题:用jq合并多个独立JSON对象为单个对象

我有如下格式的JSON文件:

{
    "cases": [
        {"id": "1", "count": 2, "ignore": "f"},
        {"id": "2", "count": 7, "ignore": "o"},
        {"id": "3", "count": 11, "ignore": "o"}
    ]
}

执行命令 jq '.cases[] | { "\(.id)" : .count }' test.json 后,得到多个独立的JSON对象:

{  "1": 2}
{  "2": 7}
{  "3": 11}

但我需要合并为单个JSON对象:

{
   "1": 2,
   "2": 7,
   "3": 11
}

请问如何通过jq实现此需求?


解决方案

你可以通过以下两种常用方式实现:

方法一:使用map+add

先将数组中的每个元素转换为目标键值对对象,再用add合并所有对象:

jq '.cases | map({"\(.id)": .count}) | add' test.json

方法二:使用reduce遍历合并

通过reduce遍历数组,逐步将每个元素的键值对合并到初始空对象中,处理大型数组时性能更优:

jq '.cases | reduce .[] as $item ({}; .[$item.id] = $item.count)' test.json

两种方式都能输出你需要的单个JSON对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:11:06