首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JsonBuilder中关闭UTF转义

在JsonBuilder中关闭UTF转义
EN

Stack Overflow用户
提问于 2012-03-21 22:06:54
回答 3查看 8.5K关注 0票数 13

我正在尝试在groovy servlet中使用JsonBuilder (扩展HttpServlet),下面是一个代码片段:

代码语言:javascript
复制
 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: 'Москва'])
  }

输出为

代码语言:javascript
复制
{"city":"\u041C\u043E\u0441\u043A\u0432\u0430"}
{сity=Москва}

我只是对JsonBuilder中的UTF转义一无所知,googling也没有给我任何有价值的东西。所以我想我被卡住了。

有谁知道如何获得json的输出,其格式与我们获得常规groovy对象的输出的格式完全相同?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-21 22:10:33

就JavaScript和/或JSON而言,它是完全相同的输出。

您可以轻松地使用confirm this yourself

代码语言:javascript
复制
'Москва' == '\u041c\u043e\u0441\u043a\u0432\u0430'; // true

您看到的是Unicode string escape sequences,它是由ECMAScript规范(JavaScript)定义的,在JSON中也是允许的。

也就是说,我不会太担心这个问题,但是如果您坚持禁用字符串转义,您可以使用JsonOutput对象:

代码语言:javascript
复制
JsonOutput.prettyPrint(json.toString());
票数 5
EN

Stack Overflow用户

发布于 2014-05-30 21:52:41

我也遇到过同样的问题,上面的方法都不起作用。然而,它做到了:http://groovy.codehaus.org/gapi/groovy/json/StringEscapeUtils.html

代码语言:javascript
复制
StringEscapeUtils.unescapeJavaScript(JsonOutput.toJson('Москва'))
票数 23
EN

Stack Overflow用户

发布于 2012-03-21 23:03:07

我找到了,我找到了。因此,如果您像我一样顽固,并且不想认识到(在非常广泛的应用程序中)转义序列与非转义序列完全相同,那么您可以只使用JsonOuput对象,它位于相同的标准包groovy.xml中。

JsonOutput.prettyPrint(json.toString())

如果某人的答案更详细,我将删除我自己的答案,并将另一个答案标记为已接受。所以我鼓励你))

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9806246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档