gpt4 book ai didi

java - 如何在freemarker中转义json字符串

转载 作者:IT老高 更新时间:2023-10-28 13:50:01 43 4
gpt4 key购买 nike

我们正在使用 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("\\>",">")}

或者,如果您使用 Spring:http://www.springsurf.org/sites/1.0.0.M3/spring-webscripts/spring-webscripts-documentation/reference/html-single/index.html#js-api-index-org.springframework.extensions.webscripts.json.jsonutils

最佳答案

您正在寻找 ?js_string 运算符。

{
"field1" : "${response.value1?js_string}",
"field2" : "${response.value2?js_string}"
}

这将处理转义引号、反斜杠等。为了让你的 JS 开心。

编辑:我刚刚看到他们在 Freemarker 2.3.19 中引入了 ?json_string 运算符。见 here确切地说它是如何工作的。并且有很多欢乐...

关于java - 如何在freemarker中转义json字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6383525/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com