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());
La sortie fine est {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);
Pas très bien La sortie est Json result is "{test\u003dm\\/m\\/m/m/m/m/m}"
Est-ce queGSONdevient fou ou est-ce quelque chose que je fais mal? Que se passe-t-il avec Back Slashes et d'où vient ce u003d
? Je savais qu'il existait un bogue de cette nature il y a longtemps, mais il a été résolu. Comment puis-je résoudre ce problème? Merci d’avance.
Le signe =
est encodé en \u003d.
. Vous devez donc utiliser disableHtmlEscaping () .
Vous pouvez utiliser
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String s2 = gson.toJson(hm.toString());
Pour que \/
devienne un problème \\/
, la solution est
s2.replace("\\\\", "\\");
Etant donné que certaines personnes aiment tatouer, je vais ajouter la réponse à la question (même si la réponse a déjà été donnée et choisie comme bonne réponse) ...
Je suis d'accord avec la réponse choisie à cette question, utilisez le code suivant:
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String s2 = gson.toJson(hm.toString());
s2.replace("\\\\", "\\");
@Bajrang Hudda a posé des questions sur\n ... j'ai récemment rencontré ce problème ... J'ai pu le résoudre en utilisant:
Gson gson = new Gson();
String json = (gson.toJson(data)).replaceAll("\\\\n", "\\n");