如何从Jinja2 / ansible中的字典中删除空值?

时间:2018-09-23 00:04:05

标签: python json templates ansible jinja2

我想在jinja2中渲染json文件(不幸的是,是否必须仅使用jinja2完成)。我认为最简单的方法是将dict传递给to_json过滤器。

{{ content | to_json }}

我希望内容字典由键(即键)组成。 abc,cde值从ansible传递给jinja,所以我会这样:

{% set content = {'abc' : abc, 'cde' : cde} %}

某些值可能是不确定的,并且独立的内容会呈现如下形式:

{{ content }}
  

{'abc':3,'cde':未定义}

如何从内容字典中过滤此未定义的值,以便to_json可以正常工作?

当我输入

{{ content | to_json }}

我明白了

  

AnsibleError:发生了意外的模板类型错误({%set content = {'bridge_ip':bridge_ip,'insecure_registries':insecure_registries}%} {{content | to_json}}):未定义不是JSON可序列化的

编辑: 我设法做到这一点,但我想知道是否有更清洁的方法:

{{ content | dict2items| rejectattr("value", "undefined") | list | items2dict | to_json }}

0 个答案:

没有答案