我正在尝试在groovy servlet中使用JsonBuilder (扩展HttpServlet),下面是一个代码片段:
public void doGet(HttpServletRequest request, HttpServletResponse response) {
response.setContentType('text/plain')
response.setCharacterEncoding('utf-8')
def pw = response.getWriter()
pw.println(new JsonBuilder(['city': 'Москва']))
pw.println([сity: 'Москва'])
}输出为
{"city":"\u041C\u043E\u0441\u043A\u0432\u0430"}
{сity=Москва}我只是对JsonBuilder中的UTF转义一无所知,googling也没有给我任何有价值的东西。所以我想我被卡住了。
有谁知道如何获得json的输出,其格式与我们获得常规groovy对象的输出的格式完全相同?
发布于 2012-03-21 22:10:33
就JavaScript和/或JSON而言,它是完全相同的输出。
您可以轻松地使用confirm this yourself
'Москва' == '\u041c\u043e\u0441\u043a\u0432\u0430'; // true您看到的是Unicode string escape sequences,它是由ECMAScript规范(JavaScript)定义的,在JSON中也是允许的。
也就是说,我不会太担心这个问题,但是如果您坚持禁用字符串转义,您可以使用JsonOutput对象:
JsonOutput.prettyPrint(json.toString());发布于 2014-05-30 21:52:41
我也遇到过同样的问题,上面的方法都不起作用。然而,它做到了:http://groovy.codehaus.org/gapi/groovy/json/StringEscapeUtils.html
StringEscapeUtils.unescapeJavaScript(JsonOutput.toJson('Москва'))发布于 2012-03-21 23:03:07
我找到了,我找到了。因此,如果您像我一样顽固,并且不想认识到(在非常广泛的应用程序中)转义序列与非转义序列完全相同,那么您可以只使用JsonOuput对象,它位于相同的标准包groovy.xml中。
JsonOutput.prettyPrint(json.toString())
如果某人的答案更详细,我将删除我自己的答案,并将另一个答案标记为已接受。所以我鼓励你))
https://stackoverflow.com/questions/9806246
复制相似问题