【发布时间】:2014-04-27 03:19:55
【问题描述】:
我有如下简单的 JSON 对象:
{"status":"Success","action":"Redirect","sessionid":6467349943156736,"url":"https://myapplicationing.com/go?id=1000"}
我创建的 JSON 如下:
JSONObject json = new JSONObject();
json.put("status", "Success");
json.put("action", "Redirect");
json.put("sessionid", "6467349943156736");
json.put("url", "https://myapplicationing.com/go?id=1000");
当我写这个 json 作为响应时
resp.setContentType("application/json");
resp.setHeader("Cache-Control", "no-cache");
resp.setCharacterEncoding("utf-8");
try {
// json.write(resp.getWriter());//[tried]
// Gson gson = new GsonBuilder().disableHtmlEscaping().create();
resp.getWriter().println(json.toString());
// resp.getWriter().println(gson.toJson(json));//[TRIED]
} catch (Exception e) {
e.printStackTrace();
}
但它仍然给我 JSON 字符串如下:
{"status":"Success","action":"Redirect","sessionid":6467349943156736,"url":"https://myapplicationing.com/go?id\u003d1000"}
这里为什么是ENCODING JSON 字符串。
它正在将“=”替换为“\u003d”。
这个我试过了:
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
resp.getWriter().println(gson.toJson(json));
但不工作。任何解决方案。
【问题讨论】:
-
你不在乎(除了可读性);
"a\u003db"和"a=b"是完全相同的 JSON 字符串。 -
但是这个响应发送到另一个应用程序并且该应用程序只是在浏览器中打开了一个请求,但它在某些浏览器上没有正确打开,有些它正在工作
-
那么这是远程应用程序中的一个错误,它不能正确解码 JSON 字符串;你应该向他们报告
-
哦!!!所以没有工作让我来处理这个?
-
不知道...我用的是 Jackson,不是 Gson...
标签: java json servlets gson response