如何用jq 1.6在bash脚本中分解JSON数组?
使用jq 1.6拆分JSON数组对象
问题描述
现有包含如下内容的JSON文件(假设名为input.json):
[ { "names": [ "name1" ], "id": "1" }, { "names": [ "name1", "name2" ], "id": "2" } ]
需要生成新JSON文件,将每个原对象按names数组拆分,得到如下结构:
[ { "name": "name1", "id": "1" }, { "name": "name1", "id": "2" }, { "name": "name2", "id": "2" } ]
解决方案
在bash脚本中使用以下jq命令即可完成转换:
jq '[ .[] | . as $item | $item.names[] | {name: ., id: $item.id} ]' input.json > output.json
命令解释
[]:将所有处理后的对象包裹成最终的JSON数组.[]:遍历原JSON数组中的每个对象. as $item:将当前遍历到的原对象存入变量$item,方便后续引用其id字段$item.names[]:遍历当前原对象中names数组的每个元素{name: ., id: $item.id}:构造新的JSON对象,name字段取当前names数组元素,id字段沿用原对象的id值
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

