我正在尝试使用一行 json_query(和/或其他过滤器)在 ansible 中编辑字典,但出了点问题,我无法弄清楚。我有这个结构(带有示例数据)
seinfeld:
- name: Jerry
jobs:
- comedian
friends:
- name: Elaine
- name: Kramer
- name: George
jobs:
- yankees
friends:
- name: Jerry
- name: Susan
我需要创建一个这样的新结构
new_list:
- main: Jerry
name: Elaine
- main: Jerry
name: Kramer
- main: George
name: Jerry
- main: George
name: Susan
将密钥name
添加到friends
key 的每个元素中,并将其展平到新列表中。我已经在混合 jmespathmap
和方面取得了一些进展merge
,但至少有一个密钥始终为空或无效,一些随机测试是
[].merge({friends: friends},{main: name}) [*].map(&merge({main: name}, @), friends)
获取数据的方式还有很多。例如,
给出相同的列表
现在,您需要映射函数product。不幸的是,这是不可能的。过滤器json_query也无法帮助您处理列表列表。所以,这是一条死路。
唯一的选择是Jinja 模板
给出你想要的
但是,你可以轻松地用子元素迭代列表。例如,
给出(节选)
是否需要new_list由您自行决定。
完整测试剧本的示例