如何使用jq将JSON对象中的数组元素展开到父对象?
要实现你需要的JSON格式转换,直接用这条jq命令即可:
jq 'map(. + (.Tags | from_entries) | del(.Tags))' input.json
命令说明:
map(...):遍历输入数组中的每个对象进行处理. + (.Tags | from_entries):将原对象与Tags数组转换后的键值对对象合并,from_entries会自动把[{"key":"x","value":0},...]这类结构转换成{"x":0,...}的键值形式del(.Tags):移除原对象中不再需要的Tags字段
示例验证:
输入JSON:
[ { "A": "a", "Tags": [ { "key":"x", "value":0}, { "key":"y", "value":1} ] }, { "A": "b", "Tags": [ { "key":"z", "value":2} ] } ]
执行命令后输出:
[ { "A": "a", "x": 0, "y": 1 }, { "A": "b", "z": 2 } ]
内容的提问来源于stack exchange,提问作者Pisamad
相关产品推荐
相关产品推荐

