本文介绍了与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对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 17:43
查看更多