带有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");