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);
罰金ではない出力は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());
\/
が\\/
問題に変わる場合、解決策は
s2.replace("\\\\", "\\");
一部の人々はnitpickを好むので、質問に回答を追加します(既に回答済みで正しい回答として選択されている場合でも)...
この質問に対する選択された答えに同意します。次のコードを使用します。
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");