【发布时间】:2018-03-27 15:34:01
【问题描述】:
我正在编写的 Jinja2 模板有问题(从 Ansible 调用)。
生成的文件是一个 JSON 文件,我将发送到 API(使用 Ansible URI 模块或 curl)。模板看起来像这样并且基本上可以工作:
{
"description" : "my description",
"pipeline": "{% include 'root/pipeline.j2' %}"
}
问题是 root/pipeline.j2 的内容非常复杂,包括多行、引号字符和许多其他使我创建的 json 文件无效的东西。我想要做的是通过过滤器解析包含的文件,将其转换为 JSON 有效字符串;像这样:
{
"description" : "my description",
"pipeline": "{% include 'root/pipeline.j2' | to_json %}"
}
但这不起作用,可能是因为过滤器作用于文件名,而不是包含的内容。
当我创建模板时,我看到管道被设置为这样的东西,只是为了稍微清楚一点:
"pipeline": "input {
"input1" {
<snipped>
"
它应该是这样的:
"pipeline": "input {\n \"input1\" {<snipped>"
注意:我只给出了前几行,并且我在删除其余配置的地方使用了“snipped”。
谁能告诉我如何在 jinja2 模板中使用包含将结果呈现为单行有效 json 字符串的方法?
提前感谢您的帮助。
【问题讨论】: