我有一个带有重复父对象的json。我需要在bash中使用jq将所有的子类合并到一个父级下。下面是json数组。来源之下的是父母。我需要接受一个单亲项目,并将其与所有子项合并。和jq有可能吗?
[
{
"source": null,
"target": {
"id": 1
}
},
{
"source": {
"id": 1
},
"target": {
"id": 2
}
},
{
"source": {
"id": 1
},
"target": {
"id": 3
}
},
{
"source": {
"id": 1
},
"target": {
"id": 10
}
},
{
"source": {
"id": 1
},
"target": {
"id": 11
}
}
]预期产出:-
[
{
"source": null,
"target": {
"id": 1
}
},
{
"source": {
"id": 1
},
"target-1": {
"id": 2
},
"target-2": {
"id": 3
},
"target-3": {
"id": 10
},
"target-4": {
"id": 11
}
}
]发布于 2020-12-15 14:18:41
jq有一个方便的组-by操作符。
既然您已经明确了in comments,这个问题的目标是知道如何执行分组,并且确切的输出格式是次要的,这种分组的一个例子是:
jq 'group_by(.source?.id // "") | [.[] | {"\(.[0].source?.id)": [.[].target.id]}] | add'...generating输出(对于给定的输入):
{
"1": [
2,
3,
10,
11
],
"null": [
1
]
}https://stackoverflow.com/questions/65307236
复制相似问题