【发布时间】:2011-09-17 00:46:25
【问题描述】:
我们正在使用 Spring MVC 和 freemarker 作为模板语言构建一个 restful api。我们选择在 freemarker 中构建 json 响应
freemarker.ftl 示例:
{
"field1" : "${response.value1}",
"field2" : "${response.value2}"
}
当值中的字符串包含引号(或 JSON 语法中的任何其他字符)时,我们会遇到问题。
问题:如何使用 freemarker 转义这些字符串?
我们查看了?xml 或?html,但它们并未涵盖所有相关字符(例如\)。
编辑: ?js_string 将转义字符串以符合 JavaScript。而且由于 JSON 是基于 JavaScript(JavaScript Object Notation)的,所以它可以工作。
EDIT2: 如果弹出单引号,?js_string 将转义它,这又会导致 JSON 无效。它的修补程序是:
${variable?js_string?replace("\\'", "\'")}
如果你真的很挑剔:
${variable?js_string?replace("\\'", "\'")?replace("\\>",">")}
【问题讨论】:
-
+1 用于 Spring 替代方案
标签: java json spring escaping freemarker