本文介绍了与jq合并json对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个要在命令行上合并的JSON列表.
I have a JSON list which I want to merge on command line .
[
{
"ipaddress": "10.10.10.222",
"name": "alice"
},
{
"ipaddress": "10.20.20.77",
"name": "bob"
},
{
"version": "6.7",
"name": "alice"
},
{
"version": "5.2.2",
"name": "bob"
}
]
预期输出:
{"name": "alice", "ipaddress": "10.10.10.222", "version": "6.7"},
{"name": "bob", "ipaddress": "10.20.20.77", "version": "5.2.2"}
你能帮我吗?谢谢你.泊位
can you help me? Thank you.bernd
推荐答案
jq -c 'group_by(.name)[]|add' input.json
产生JSON对象流(即,不插入逗号).
produces a stream of the JSON objects (i.e. without intervening commas).
更好的是完全避免使用group_by/1
,因为它涉及一种排序方式:
Better yet would be to avoid group_by/1
altogether as it involves a sort:
def add_by(f):
reduce .[] as $x ({}; ($x|f) as $f | .[$f] += [$x])
| [.[] | add];
add_by(.name)
这篇关于与jq合并json对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!