ansible JINJA2 temp中的变量问题

2024-10-01 15:38:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用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"
  }
}

对金盏二号的申报有什么建议吗?你知道吗


Tags: 文件模板jsonjinja2定义valuedebansible
1条回答
网友
1楼 · 发布于 2024-10-01 15:38:59

在Jinja2中,条形字符(“|”)是used to apply a filter,因此在本例中,它试图将过滤器2应用于1,这显然没有意义!你知道吗

在本例中,我建议使用Jinja2的builtin tojson filter,这将把python对象转换为最接近的JSON等价物。如果您使用的是高于2.9的Jinja2版本,则会出现此问题。你知道吗

理想情况下,我会预处理数据,以便12位于同一个字典中,这样您就可以简单地编写:

{{ combined | tojson }}

如果这不是一个选项,您可以尝试更难看一点:

{{ dict(1, **2) | tojson }}

它使用pythonsdict constructor来合并这两个词典。你知道吗

编辑:如果你想漂亮地打印你的json,调用tojson过滤器,输入你想要的缩进量,例如,要得到2个空格缩进,使用:

{{ data | tojson(2) }}

相关问题 更多 >

    热门问题