根据键合并 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'
如何根据相同的键合并 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'