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("\\\\", "\\");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With