我正在try 向嵌套词典中添加一个额外的条目.我能够提取嵌套的字典,将其追加到字典中,但不能完全弄清楚如何用新创建的部分替换嵌套的部分.我有一种感觉,有一种更简单的方法来做这件事.我只会问我最后想要什么,而不是发布我已经try 过的东西,然后看看它go 了哪里.

我需要在my_Team下添加一个额外的条目,该条目将作为var:

ok: [localhost] => changed=false 
  json:
    OTHER_KEYS_1: value1
    OTHER_KEYS_2:
      value1
      key1: value1
    OTHER_KEYS_3:
      key1: value1
      key2: value2
      my_team:
      - org: Default
        team: TEAM-ONE-ADMINS
      - org: Default
        team: TEAM-ONE-USERS
      - org: Default
        team: TEAM-TWO-USERS
      - org: Default
        team: TEAM-TWO-ADMINS
      - org: Default
        team: TEAM-THREE-USERS
      - org: Default
        team: TEAM-THREE-ADMINS
    OTHER_KEYS_4: {}
    OTHER_KEYS_5:
      emailAddress: someemail@mail.com
      givenName: User Name
    OTHER_KEYS_6:
      key1: value1
  msg: OK (7003 bytes)
  pragma: no-cache
  redirected: false
  server: nginx
  status: 200
  strict_transport_security: max-age=63072000
  url: https://tower/api/v2/settings/saml/?format=json
  vary: Accept, Accept-Language, Origin, Cookie

推荐答案

问:100

答:给定简化的数据

    data:
      k1: v1
      k2: v2
      k3:
        key1: value1
        key2: value2
        my_team:
          - {org: default, team: team_one}
          - {org: default, team: team_two}

声明您要添加的内容

    data_add:
      k3:
        my_team:
          - {org: default, team: team_three}

combine本词典

  result: "{{ [data, data_add]|combine(recursive=True, list_merge='append') }}"

为词典提供一个小于my_team的附加条目

  result:
    k1: v1
    k2: v2
    k3:
      key1: value1
      key2: value2
      my_team:
      - {org: default, team: team_one}
      - {org: default, team: team_two}
      - {org: default, team: team_three}

完整的测试攻略示例

- hosts: all

  vars:

    data:
      k1: v1
      k2: v2
      k3:
        key1: value1
        key2: value2
        my_team:
          - {org: default, team: team_one}
          - {org: default, team: team_two}

    data_add:
      k3:
        my_team:
          - {org: default, team: team_three}

    result: "{{ [data, data_add]|combine(recursive=True, list_merge='append') }}"

  tasks:

    - debug:
        var: data|to_yaml

    - debug:
        var: result|to_yaml

Json相关问答推荐

如何在Power BI中集成API和JSON数据后将数据转换为表?

使用更高级别架构中的字段值在$def内实现约束

从Postgres表中的JSON中提取值

Jolt Spec 跳过数组中的第一个元素

从包含 JSON 对象序列的文件中获取第一个 JSON 对象

Powershell解析JSON文件中的键或值

遍历 JSON,检索父值

如何编写 jolt 规范以将不同的对象转换为数组

无法在Kotlin 中解析JSONObject

下一个 Js 部署在 getStaticPath 函数上失败:在 JSON.parse 的位置 0 的 JSON 中出现意外的令牌 < 但在本地运行

字典和对象的模型创建问题

如何使用 LINQ 在 C# 中重构对象?

以 JSON 格式访问(新型、公共)Google 工作表

如何使用 gson 调用默认反序列化

ASP.NET MVC - 将 Json 结果与 ViewResult 结合起来

JSON 到 JSON 转换器

关于使用 $ref 的 JSON 模式

区分字符串和列表的 Pythonic 方式是什么?

如何判断 JSON 响应元素是否为数组?

Gson 将一组数据对象转换为 json - Android