首页 > 解决方案 > Ansible 合并 json 对象

问题描述

我需要基于第一个对象键合并两个 JSON 对象

object1 = {
 "params" : {
    "type": ["type1", "type2"],
    "requeststate": []
 }        
}

object2 = {
 "params" : {
    "type": ["type2", "type3", "type4"],
    "requeststate": ["Original", "Revised" ],
    "responsestate": ["Approved" ]
 }        
}

我需要基于第一个对象键合并两个对象,我的输出应如下所示

mergedobject = {
 "params" : {
    "type": ["type1", "type2", "type3", "type4"],
    "requeststate": ["Original", "Revised"]
 }        
}

我搜索了我的案例,但没有找到太多细节请告诉我是否可以使用 ansible

我可以将数组与

  set_fact:
    mergedrequeststate: "{{ object1.params.requeststate +  object2.params.requeststate  }}"

但我的案例涉及超过 15 个参数对象,我无法声明所有参数对象。它也可能在未来增长,如果可能的话我需要处理它。

如果您需要更多详细信息,请发表评论。谢谢你的支持

标签: ansible

解决方案


使用combine过滤器。

- set_fact:
    mergedobject: "{{ object1.params | combine (object2.params) }}"

推荐阅读