带有String的GSON问题
String s = "m\\"+"/m\\/m/m/m/m/m"; LinkedHashMap hm = new LinkedHashMap(); hm.put("test", s); System.out.println(hm+" Hash map = "+hm.toString());
精细输出为{test=m\/m\/m/m/m/m/m} Hash map = {test=m\/m\/m/m/m/m/m}
String s2 = new Gson().toJson(hm.toString()); System.out.println("Json result is "+s2);
Json result is "{test\u003dm\\/m\\/m/m/m/m/m}"
输出是Json result is "{test\u003dm\\/m\\/m/m/m/m/m}"
GSON是疯了还是我做错了? 反斜杠和这个u003d
出现在哪里会发生什么? 我知道很久以前就存在这种性质的错误但它已经解决了。 我该如何解决这个问题? 提前致谢。
=
符号被编码为\u003d.
因此,您需要使用disableHtmlEscaping() 。
您可以使用
Gson gson = new GsonBuilder().disableHtmlEscaping().create(); String s2 = gson.toJson(hm.toString());
对于\/
转入\\/
issue,解决方案是
s2.replace("\\\\", "\\");
由于有些人喜欢挑剔,我会添加问题的答案(即使已经回答并选择为正确的答案)……
我同意这个问题的选择答案,请使用以下代码:
Gson gson = new GsonBuilder().disableHtmlEscaping().create(); String s2 = gson.toJson(hm.toString()); s2.replace("\\\\", "\\");
@Bajrang Hudda问过\ n …我最近遇到了这个问题……我能够用以下方法解决它:
Gson gson = new Gson(); String json = (gson.toJson(data)).replaceAll("\\\\n", "\\n");