根据键合并 2 json 个数组

Merge 2 json arrays based on their keys

如何根据相同的键合并 2 个 json 数组,并在输出 json 文件中添加输入 json pog_id 的第 3 个项目?我尝试使用下面提到的代码在 json 中的一个键内创建 2 个不同的数组,而不是将值合并到同一个数组中。

mergedobject.json

[
    {
        "name": "ALL_DMZ",
        "objectIds": [
            "29570",
            "29571"
        ],
        "orgid": "777777",
        "pog_id": "333333"
    },
    {
        "name": "ALL_DMZ",
        "objectIds": [
            "729548",
            "729549",
            "295568"
            
        ],
        "orgid": "777777",
        "pog_id": "333333"
    }
    
]

Playbook

- set_fact:
        output: "{{ output|d([]) + [{'orgid': item.0,
                                     'objectIds': item.1|
                                                  map(attribute='objectIds')|
                                                  list}] }}"
      loop: "{{ mergedobject|groupby('name') }}"

当前输出

[
    {
        "name": "ALL_DMZ",
        "objectIds": [
        [   "29570",
            "29571"
        ],
        [
            "729548",
            "729549",
            "295568"  
        ]
      ]
        "orgid": "777777"
    }
    
]

预期输出

[
    {
        "name": "ALL_DMZ",
        "objectIds": [
            "29570",
            "29571",
            "729548",
            "729549",
            "295568"  
      ]
        "orgid": "777777",
        "pog_id": "333333"
    }
    
]
鉴于数据
  mergedobject:
    - name: ALL_DMZ
      objectIds: ['29570', '29571']
      orgid: '777777'
      pog_id: '333333'
    - name: ALL_DMZ
      objectIds: ['729548', '729549', '295568']
      orgid: '777777'
      pog_id: '333333'

combine 列表中的项目。在属性中附加列表

  output: "{{ mergedobject|combine(list_merge='append') }}"

给予

  output:
    name: ALL_DMZ
    objectIds: ['29570', '29571', '729548', '729549', '295568']
    orgid: '777777'
    pog_id: '333333'

您可以将结果放入列表

  output: "[{{ mergedobject|combine(list_merge='append') }}]"

给你想要的

  output:
    - name: ALL_DMZ
      objectIds: ['29570', '29571', '729548', '729549', '295568']
      orgid: '777777'
      pog_id: '333333'