我的问题看起来微不足道,但是我已经花了几个小时了。
如何使用jinja2动态导航到json变量。 例如:我知道
ansible_lvm.vgs:
"vgs": {
"vgdata": {
"free_g": "16",
"size_g": "0"
},
"vgswap": {
"free_g": "0",
"size_g": "00"
}
}
在jinja2结构中,我想获得“ vgdata”的“ free_g”属性: 以下代码均无效:
{% set my_vg_name = 'vg_data' %}
{% set my_vg_size = ansible_lvm.vgs.(my_vg_name).free_g %}
{% set my_vg_size = ansible_lvm.vgs.{{my_vg_name}}.free_g %}
{% set my_vg_size = ansible_lvm.vgs|selectattr(my_vg_name, 'free_g') %}
感谢您的帮助,
答案 0 :(得分:0)
因此,我希望顶部的代码段只是一个示例,而不是您真正使用的代码,因为它是格式错误的JSON。而且,我希望您在键为vgs
时实际上不会向vg_data
对象请求vgdata
,因为那样子永远都不会结束。
那边:
您可以使用dict
语法访问python中的vgs[my_vg_name]
个对象,或者如果不确定vgs
包含该键,vgs.get(my_vg_name, {})
来提供空的{{1如果dict
不包含其值在vgs
变量中的键,则为默认值。
也许这只是一个不好的问题,但是如果您始终想要my_vg_name
,那么为什么要进行动态访问呢?