Escape包含在freemarker中的文件

时间:2014-03-07 23:06:12

标签: json escaping freemarker

我正在尝试渲染包含转义xml的json。所以“应该是”,新行\ n等。为了使它更具可读性,我想将其分成两个文件,一个用json,第二个用xml。它们都必须是模板,因为它们具有一些动态值。

{
"xml" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n ..."
}

json.ftl:

{
"xml" : "<#include "xml.ftl">"
}

xml.ftl:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>...

我如何实现逃避?我知道有js_string和json_string,但问题是我不知道如何使用include来应用它们。谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

你可以像这样制作一个宏:

<#macro includeAsJsonString templateName>
  <#local captured><#include templateName></#local>
  ${captured?json_string}<#t>
</#macro>

然后你这样做:

{
"xml" : "<@includeAsJsonString 'xml.ftl' />"
}

(当然,您不必为此创建宏,但我认为这更可重用。)