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

如何使用jq将独立key:value映射合并为单个映射?

使用jq将独立JSON对象转换为逗号分隔格式

我有如下两个独立的JSON对象:

{
    "Key1": "value1",
    "Key2": "value2",
    "Key3": "value3",
    "Key4": "value4"
}
{
    "Key1": "value1",
    "Key2": "value2",
    "Key3": "value3",
    "Key4": "value4"
}

需要将其转换为用逗号分隔的格式:

{
    "Key1": "value1",
    "Key2": "value2",
    "Key3": "value3",
    "Key4": "value4"
},
{
    "Key1": "value1",
    "Key2": "value2",
    "Key3": "value3",
    "Key4": "value4"
}

解决方案

以下是几种可行的命令行方法:

方法1:数组中转移除括号

先将所有JSON对象收集为数组,再移除数组首尾的括号:

jq -n '[inputs]' input.json | sed 's/^\[\(.*\)\]$/\1/'
  • jq -n '[inputs]':读取所有输入的JSON对象,包装成一个JSON数组
  • sed 's/^\[\(.*\)\]$/\1/':删除数组开头的[和结尾的],得到逗号分隔的对象列表

方法2:压缩拼接后格式化

先把每个对象压缩为单行,用逗号拼接后再重新格式化:

jq -c '.' input.json | paste -sd ',' - | jq '.'
  • jq -c '.':将每个JSON对象压缩成单行输出
  • paste -sd ',' -:把所有单行对象用逗号连接
  • jq '.':将拼接后的内容重新格式化为易读的JSON格式

方法3:awk插入分隔符

直接处理原始格式化内容,在对象之间插入逗号:

jq '.' input.json | awk 'BEGIN{prev=0} /^{$/{if(prev==1) print ","; prev=1} 1'
  • 当检测到每个对象的起始行{时,若不是第一个对象则先输出逗号,再输出当前内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:32:39