Aquí es un ejemplo del uso Gson:
public class GsonTest {
static class Name { String first; String last; }
static class Data { int number; Name name = new Name(); }
public static void main(String[] args) {
Gson gson = new Gson();
Data data1 = new Data();
data1.number = 1;
data1.name.first = "Joe";
data1.name.last = "Smith";
print("data1", data1);
String jsonString = gson.toJson(data1);
System.out.println("jsonString: " + jsonString);
Data data2 = gson.fromJson(jsonString, Data.class);
print("data2", data2);
}
private static void print(String id, Data data) {
System.out.println(id + " :"
+ " number=" + data.number
+ " name.first=" + data.name.first
+ " name.last=" + data.name.last);
}
}
salida
data1 : number=1 name.first=Joe name.last=Smith
jsonString: {"number":1,"name":{"first":"Joe","last":"Smith"}}
data2 : number=1 name.first=Joe name.last=Smith
velocidad
Gson debe ser casi tan rápido como cualquier otro comparables basado en la reflexión Objeto < -> Marco de serialización de texto, pero no tengo datos de referencia.
Soporte haba de
diferencia de XStream (opcionalmente) y java.beans.XMLEncoder/XMLEncoder, Gson no utiliza setter y getter métodos de una clase. Más bien lee y escribe directamente los campos miembros de la clase, similar a la serialización binaria de Java (ObjectOutputStream, etc.) Mientras que Gson debería ser capaz de reunir y desmantelar la mayoría de los JavaBeans, este detalle de implementación de Gson debe tenerse en cuenta y justificarse.
Pretty-impresos JSON de salida
Por defecto GSON salidas JSON todo en una línea, como una optimización. Puede generar JSON que es un poco más fácil de leer. Para ello, la construcción del objeto Gson de una manera ligeramente diferente:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
La salida JSON (siguiendo con el ejemplo anterior), ahora se ve así:
{
"number": 1,
"name": {
"first": "Joe",
"last": "Smith"
}
}
en lugar de
{"number":1,"name":{"first":"Joe","last":"Smith"}}
No se puede utilizar la interfaz de 'Serializable'? – dacwe
por salida de ToStringBuilder, ¿a qué te refieres con que puedes publicar el código? –
@dacwe - dijo "legible";) – Bozho