我们正在构建一个restful api,使用Spring MVC和freemarker作为模板语言。我们选择在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("\\>",">")}
https://stackoverflow.com/questions/6383525
复制相似问题