Json 转义freemarker中包含的文件

Json 转义freemarker中包含的文件,json,escaping,freemarker,Json,Escaping,Freemarker,我试图呈现一个包含转义xml的json。所以“应该是\”、新行\n等等。为了让它更具可读性,我想把它分成两个文件,一个是json文件,另一个是xml文件。它们都必须是模板,因为它们具有一些动态值 { "xml" : "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n ..." } { “xml”:“\n…” } json.ftl: { "xml" : "<#include "xml.ftl">

我试图呈现一个包含转义xml的json。所以“应该是\”、新行\n等等。为了让它更具可读性,我想把它分成两个文件,一个是json文件,另一个是xml文件。它们都必须是模板,因为它们具有一些动态值

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

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

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

我怎样才能做到这一点?我知道有js_字符串和json_字符串,但问题是我不知道如何将它们与include一起应用。感谢您的帮助

您可以制作如下宏:

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

${captured?json_string}
然后你要这样做:

{
"xml" : "<@includeAsJsonString 'xml.ftl' />"
}
{
“xml”:”
}
(当然,您不必为此创建宏,但我认为这样更易于重用。)