如何使用jq提取JSON数组item元素并保留逗号去除外层括号
jq提取JSON数组元素并保留逗号分隔的实现方法
需求说明
存在结构如下的collection.json文件:
{ "info" : { ... }, "item" : [ {...}, # A {...}, # B {...} # C ] }
需要提取item数组中的所有元素,输出不带首尾方括号、保留元素之间的逗号,预期效果如下:
{...}, # A {...}, # B {...} # C
已尝试方案的问题
jq -r '.item' collection.json:输出会保留数组的首尾方括号,不符合要求jq -r '.item[]' collection.json:展开数组元素时会移除元素之间的逗号分隔符,不符合要求
可行解决方案
使用如下jq命令即可实现需求:
jq -r '.item | map(tostring) | join(",\n")' collection.json
命令逻辑说明
.item定位到目标数组map(tostring)将数组内的每个JSON对象转换为字符串格式join(",\n")使用,\n作为分隔符拼接所有元素,既保留了元素间的逗号和换行,也不会输出数组首尾的方括号
补充:如果你的JSON文件包含
#注释这类非标准JSON语法,可以用支持JSON5的yq工具替代jq执行上述逻辑,命令结构一致。
内容的提问来源于stack exchange,提问作者Hamza Ince
相关产品推荐
相关产品推荐

