java - pagina - insertar referencias apa de internet
Gson-Cita automática(") escapando? (5)
Estoy usando GSON en mi servidor Java EE para proporcionar algunos json a las vistas. En algún objeto, tengo un texto largo, que puede contener cualquier cosa (como ''¡Qué "noticias tan geniales!'').
Estoy sorprendido de que por defecto, GSON no escapa a la doble comilla, por lo que no genera un JSON válido.
¿Hay una buena manera de hacer esto?
Aquí hay algunos ejemplos de código GSON:
final JsonObject obj = new JsonObject();
obj.addProperty("foo", "b/"a/"r");
System.out.println(obj.toString());
La salida es:
{"foo": "b /" a / "r"}
(como debería ser)
Entonces, o estás haciendo algo mal, o estás usando una versión antigua de GSON. Quizás deberías mostrar algo de tu código?
En lugar de eso, puedes usar el HashMap para deserializar las claves desconocidas.
Eso es lo que hice para resolver eso.
private final Gson mGson;
{
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(String.class, new EscapeStringSerializer());
mGson = builder.create();
}
private static class EscapeStringSerializer implements JsonSerializer<String> {
@Override
public JsonElement serialize(String s, Type type, JsonSerializationContext jsonSerializationContext) {
return new JsonPrimitive(escapeJS(s));
}
public static String escapeJS(String string) {
String escapes[][] = new String[][]{
{"//", "////"},
{"/"", "///""},
{"/n", "//n"},
{"/r", "//r"},
{"/b", "//b"},
{"/f", "//f"},
{"/t", "//t"}
};
for (String[] esc : escapes) {
string = string.replace(esc[0], esc[1]);
}
return string;
}
}
Intente usar setPrettyPrinting con DisableHtml escaping.
Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(jsonArray.toString());
System.out.println( gson.toJson(je));
Tal vez no entiendo su pregunta, pero pude obtener GSON para manejar cadenas con comillas sin ninguna configuración o cambio.
import com.google.gson.Gson;
public class GSONTest {
public String value;
public static void main(String[] args) {
Gson g = new Gson();
GSONTest gt = new GSONTest();
gt.value = "This is a /"test/" of quoted strings";
System.out.println("String: " + gt.value);
System.out.println("JSON: " + g.toJson(gt));
}
}
Salida:
String: This is a "test" of quoted strings
JSON: {"value":"This is a /"test/" of quoted strings"}
Tal vez no entiendo lo que estás preguntando?