首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我有一个带有重复父对象的json。我需要在bash中使用jq将所有子类合并到一个父级以下。

我有一个带有重复父对象的json。我需要在bash中使用jq将所有子类合并到一个父级以下。
EN

Stack Overflow用户
提问于 2020-12-15 13:50:25
回答 1查看 347关注 0票数 0

我有一个带有重复父对象的json。我需要在bash中使用jq将所有的子类合并到一个父级下。下面是json数组。来源之下的是父母。我需要接受一个单亲项目,并将其与所有子项合并。和jq有可能吗?

代码语言:javascript
复制
 [
        {
            "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
            }
        }
    ]

预期产出:-

代码语言:javascript
复制
 [
        {
            "source": null,
            "target": {
                "id": 1
            }
        },
        {
            "source": {
                "id": 1
            },
            "target-1": {
                "id": 2
            },
            "target-2": {
                "id": 3
            },
            "target-3": {
                "id": 10
            },
            "target-4": {
                "id": 11
            }
        }
    ]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-15 14:18:41

jq有一个方便的组-by操作符。

既然您已经明确了in comments,这个问题的目标是知道如何执行分组,并且确切的输出格式是次要的,这种分组的一个例子是:

代码语言:javascript
复制
jq 'group_by(.source?.id // "") | [.[] | {"\(.[0].source?.id)": [.[].target.id]}] | add'

...generating输出(对于给定的输入):

代码语言:javascript
复制
{
  "1": [
    2,
    3,
    10,
    11
  ],
  "null": [
    1
  ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65307236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档