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());
Fine Output is {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 is Json result is "{test\u003dm\\/m\\/m/m/m/m/m}"
Is GSON going mad or is it something that I am doing wrong? What is happening to with Back Slashes and from where does this u003d
appears? I knew that there exists a bug of this nature a long time ago but it was resolved.
How can I resolve this issue?
Thanks in advance.
The =
sign is encoded to \u003d.
Hence you need to use disableHtmlEscaping().
You can use
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String s2 = gson.toJson(hm.toString());
For \/
turning into \\/
issue, the solution is
s2.replace("\\\\", "\\");