2013-05-15 132 views
19
String s = "m\\"+"/m\\/m/m/m/m/m"; 

    LinkedHashMap<String, String> 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}GSON問題與字符串

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}"

GSON要瘋了還是我做錯了什麼嗎?發生了什麼事反斜槓從此u003d出現在哪裏?我知道很久以前就有這種性質的錯誤,但已經解決了。 我該如何解決這個問題? 在此先感謝。

+0

其編碼:'='爲'\ u003dm'和'\'來\\\ ' – codeMan

+0

如何解決後面的問題。有什麼建議麼? –

回答

43

=符號編碼爲\u003d.因此您需要使用disableHtmlEscaping()

您可以使用

Gson gson = new GsonBuilder().disableHtmlEscaping().create(); 
String s2 = gson.toJson(hm.toString()); 

對於\/變成\\/問題,解決的辦法是重新

s2.replace("\\\\", "\\"); 
+0

\ n怎麼樣?因爲\ n也有時在字符串中添加。 –