2013-05-15 4 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も時々文字列に追加されています。 –