java - libreria - Problema de GSON con String
swagger gradle spring boot (2)
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 salida fina es {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);
La salida no fina es Json result is "{test/u003dm///m///m/m/m/m/m}"
¿ Se está volviendo loco GSON o es algo que estoy haciendo mal? ¿Qué sucede con las u003d
hacia atrás y desde dónde aparece este u003d
? Sabía que existe un error de esta naturaleza hace mucho tiempo pero se resolvió. ¿Cómo puedo resolver este problema? Gracias por adelantado.
El signo =
está codificado en /u003d.
Por lo tanto, debe utilizar disableHtmlEscaping() .
Puedes usar
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String s2 = gson.toJson(hm.toString());
Para //
convirtiéndose en ///
problema, la solución es
s2.replace("////", "//");
Ya que a algunas personas les gusta hacer nitpick, agregaré la respuesta a la pregunta (aunque ya fue respondida y elegida como la respuesta correcta) ...
Estoy de acuerdo con la respuesta elegida a esta pregunta, use el siguiente código:
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String s2 = gson.toJson(hm.toString());
s2.replace("////", "//");
@Bajrang Hudda ha preguntado acerca de / n ... Me topé con este problema recientemente ... Pude resolverlo usando:
Gson gson = new Gson();
String json = (gson.toJson(data)).replaceAll("////n", "//n");