Mik*_* T. 5 dictionary jinja2 ansible jmespath
我有一个字典,其中package-name是键的字典,一些细节的字典是value:
{
"php7.1-readline": {
"latest": "7.1.9-1+ubuntu14.04.1+deb.sury.org+1",
"origins": [
"ppa.launchpad.net"
],
"version": "7.1.6-2~ubuntu14.04.1+deb.sury.org+1",
"www": "http://www.php.net/"
},
"php7.1-xml": {
"latest": "7.1.9-1+ubuntu14.04.1+deb.sury.org+1",
"origins": [
"ppa.launchpad.net"
],
"version": "7.1.6-2~ubuntu14.04.1+deb.sury.org+1",
"www": "http://www.php.net/"
},
"plymouth": {
"version": "0.8.8-0ubuntu17.1"
},
....
}
Run Code Online (Sandbox Code Playgroud)
我想将以上内容简化为仅包含latest其属性为-attribute 的包的字典。
似乎json_query是要使用的过滤器,但是我无法弄清楚语法。那里的例子似乎都是在词典列表上操作的,而不是相同词典的列表 ...
例如,如果我将上述字典“管道”到中json_query('*.latest'),我会得到实际最新版本的列表:
[
"7.1.9-1+ubuntu14.04.1+deb.sury.org+1",
"7.1.9-1+ubuntu14.04.1+deb.sury.org+1",
"7.1.6-2~ubuntu14.04.1+deb.sury.org+1"
]
Run Code Online (Sandbox Code Playgroud)
我如何获取整个字典元素呢?
有希望吗
随着2017 年 12 月添加的dict2items过滤器,可以使用本机功能:
- debug:
msg: "{{ dict(pkg | dict2items | json_query('[?value.latest].[key, value.latest]')) }}"
Run Code Online (Sandbox Code Playgroud)
结果:
"msg": {
"php7.1-readline": "7.1.9-1+ubuntu14.04.1+deb.sury.org+1",
"php7.1-xml": "7.1.9-1+ubuntu14.04.1+deb.sury.org+1"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4931 次 |
| 最近记录: |