我有多个 json 对象,如果对象键与下一个 json 对象匹配相同的值,那么当我合并数组时,这些对象可能会更少。我正在尝试使用 jq 来完成此任务。
我想我必须首先使用 group_by(.name) 对匹配的键进行分组。我还使用 slurp 首先将所有对象包装到一个大数组中。
我现在没有任何工作。
给定:
{
"name": "a",
"list": [ "a1", "a2" ]
}
{
"name": "a",
"list": [ "a3", "a4" ]
}
{
"name": "b",
"list": [ "b1", "b2" ]
}
应该导致:
{
"name": "a",
"list": [ "a1", "a2", "a3", "a4" ]
}
{
"name": "b",
"list": [ "b1", "b2" ]
}
最佳答案
您可以像这样使用reduce
:
$ jq -c -n 'reduce inputs as $p ({}; .[$p.name] |= { name : $p.name, list : (.list + $p.list) }) | .[]' file
{"name":"a","list":["a1","a2","a3","a4"]}
{"name":"b","list":["b1","b2"]}
关于json - 根据对象键/值在对象内连接 2 个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55312306/