sha*_*unc 11 groovy json servlets
我正在尝试在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: '??????'])
}
Run Code Online (Sandbox Code Playgroud)
输出是
{"city":"\u041C\u043E\u0441\u043A\u0432\u0430"}
{?ity=??????}
Run Code Online (Sandbox Code Playgroud)
我对JsonBuilder中的UTF转义一无所知,谷歌搜索也没有给我任何有价值的东西.所以我想我被卡住了.
有没有人知道如何以与我们获得常规groovy对象的输出完全相同的形式获取json的输出?
Teg*_*egi 18
我遇到了同样的问题,上面的方法没有用.但是这样做了:http: //groovy.codehaus.org/gapi/groovy/json/StringEscapeUtils.html
StringEscapeUtils.unescapeJavaScript(JsonOutput.toJson('??????'))
Run Code Online (Sandbox Code Playgroud)
就JavaScript和/或JSON而言,它是完全相同的输出。
您可以轻松地自己确认以下内容:
'??????' == '\u041c\u043e\u0441\u043a\u0432\u0430'; // true
Run Code Online (Sandbox Code Playgroud)
您将看到Unicode字符串转义序列,该序列由ECMAScript规范(JavaScript)定义,并且也允许在JSON中使用。
也就是说,我不会太担心,但是如果您坚持禁用字符串转义符,则可以使用该JsonOutput对象:
JsonOutput.prettyPrint(json.toString());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6561 次 |
| 最近记录: |