我在使用ansible中的变量创建JSON文件(在JINJA2中)时遇到了问题。
变量
1:
abc:
add1: "1614"
add2: "1615"
add3: "1616"
2:
deb:
add5: "1617"
add6: "1618"
add7: "1619"
在JINJA2模板中,我定义了像
这样的值 value: {{1 | 2}}
然后格式化不正确。它应该是
{
"abc": {
"add1": "1614",
"add2": "1615",
"add3": "1616"
},
"deb": {
"add5": "1617",
"add6": "1618",
"add7": "1619"
}
}
有关JINJA2声明的任何建议吗?
答案 0 :(得分:0)
在Jinja2中,条形字符(" |
")为used to apply a filter,因此在这种情况下,它会尝试将过滤器2
应用于1
,这显然没有意义!
在这种情况下,我建议使用Jinja2的builtin tojson filter,它会将python对象变成最接近JSON的对象。如果您使用的Jinja2版本大于2.9,则会出现此情况。
理想情况下,我会预先处理数据,以便1
和2
位于同一个字典中,因此您只需编写:
{{ combined | tojson }}
如果这不是一个选项,你可以试着看起来更丑陋:
{{ dict(1, **2) | tojson }}
这使用pythons dict constructor来合并两个词典。
编辑:如果你想漂亮打印你的json,请调用tojson
过滤器,你需要多少缩进,例如。获得2个空格缩进使用:
{{ data | tojson(2) }}