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

    String s2 = new Gson().toJson(hm.toString());

    System.out.println("Json result is "+s2);

Not Fine Output はJson result is "{test\u003dm\\/m\\/m/m/m/m/m}"

GSONはおかしくなっているのでしょうか、それとも私が間違っているのでしょうか? バックスラッシュで何が起こっているのですか?また、これはどこからu003d表示されますか? この種のバグが存在することはずっと前から知っていましたが、解決されました。この問題を解決するにはどうすればよいですか? 前もって感謝します。

4

2 に答える 2

119

=符号はにエンコードされているため、disableHtmlEscaping()\u003d.を使用する必要があります。

使用できます

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

\/問題にするには\\/、解決策は

s2.replace("\\\\", "\\");
于 2013-05-15T07:02:41.353 に答える