我在 Ansible(YAML 格式)中有以下变量结构:
my_groups:
- name: g1
users:
- name: foo
param: rock
junk: whatever
- name: bar
param: paper
junk: whatever
- name: g2
users:
- name: baz
param: scissors
junk: whatever
Run Code Online (Sandbox Code Playgroud)
我需要将它转换为users看起来像这样的平面数组(注意1每个name):
- name: foo1
param: rock
- name: bar1
param: paper
- name: baz1
param: scissors
Run Code Online (Sandbox Code Playgroud)
我使用Jinja过滤器json_query(它内部使用Python 中的JMESPath查询语言),如下所示:
{{ my_groups|json_query( "[*].users[*].{ name: name, param: param }" ) }}
Run Code Online (Sandbox Code Playgroud)
它返回上面提到的数组,但1当然没有名字。有什么方法可以用简单的字符串实现所需的连接吗?由于文档和示例,我尝试了一些变体,但没有运气,即:
{{ my_groups|json_query( "[*].users[*].{ name: …Run Code Online (Sandbox Code Playgroud)