Serialización y deserialización
Se puede guardar un archivo en el disco o enviar a través de la red simplemente enviando el archivo tal como es, byte by byte, desde el principio (como código fuente, bytecode o código binario). Que no es serialización. La serialización es el proceso de convertir un objeto en un flujo de bytes, para el almacenamiento o transmisión, aún como objeto. Esto no es lo mismo que solo leer los bytes desde el principio y enviar o guardar. Lo opuesto a la serialización es la deserialización. No la serialización de papilla, como proceso, se realiza con objetos primitivos por su cuenta.
JSON representa la notación de objeto JavaScript. JSON es un formato para la serialización. Un objeto Java (definido) se puede convertir en una representación JSON (cadena) para la transmisión o ahorro. Para la reutilización, la representación JSON se convierte en el objeto Java. GSON es una biblioteca Java utilizada para la conversión en cualquier dirección.
Para serializar, use el método TOJSON () del objeto GSON. Para deserializar, use el método fromjson () del objeto gson. Este artículo explica los conceptos básicos de la serialización de los objetos Java a la representación JSON, con el método tOjson () y la deserialización de la representación JSON (String), al objeto Java, con el método fromjson ().
Contenido del artículo
Descargar y configurar la biblioteca GSON
La biblioteca GSON viene como un archivo jar. Una biblioteca como GSson se conoce como dependencia. Es gratis para descargar. El resto de esta sección explica lo que hizo el autor con su anfitrión Ubuntu OS Computer. El lector puede repetir o modificar el enfoque.
Creó un directorio, llamado Dependencias, In/Home/User/para tener:/hogar/usuario/dependencias, donde un usuario debe ser reemplazado por el nombre del usuario.
Descargó el archivo de la biblioteca, GSON-2.8.9.Jar, del hipervínculo:
https: // buscar.aturdir.org/remotecontente?filepath = com/google/code/gson/gson/2.8.9/GSON-2.8.9.frasco
y lo guardó, como lo es, en el directorio de dependencias.
A continuación, en el símbolo del sistema, configuró (ingresó) una variable de clase, como sigue:
Exportar classpath =/home/user/dependenciasEl programa Java debe tener, como mínimo, lo siguiente:
importación.Google.gson.Gson;El nombre del archivo del código fuente es.Java. Tenga en cuenta el nombre del paquete importado, que se encuentra en el GSON-2.8.9.archivo jar. La siguiente línea de comando se usó para compilar el programa en el código de byte:
javac -classpath/home/user:/home/user/dependencias/gson -2.8.9.jarra.JavaTenga en cuenta el interruptor, classpath . Aquí hay dos caminos, separados por un colon (sin espacio alrededor del colon). El primero es la ruta al archivo principal, elsss.Java; y el segundo es la ruta al archivo de la biblioteca, GSON-2.8.9.frasco.
El ByTecode resultante se ejecuta con la siguiente línea de comando:
java -classpath/home/user:/home/user/dependencias/gson -2.8.9.jarraEl interruptor y las dos rutas todavía están allí, en sus posiciones, por las mismas razones. El bytecode debe ejecutarse con éxito, todo es igual.
Objetos java primitivos
Esta sección ilustra qué valor tendrá un objeto primitivo después de la serialización, como cadena JSON y qué valor tendrá después de la deserialización. Para usar los métodos tojson () y fromjson (), el objeto gson debe crearse con una declaración como:
Gson gson = new Gson ();donde GSON es el objeto GSON que se utilizará con sus métodos: tOjson () para la serialización, y dejson () para la deserialización.
byte
Considere el siguiente código dentro del método Main ():
Gsongson = new Gson ();La salida es 56. Este código esializa y deserializa. Tenga en cuenta el segundo argumento de fromjson (), que es byte.clase. La serialización de un objeto tipo se convierte en una cadena JSON, y la deserialización debe volver al mismo tipo. Por eso Byte.la clase está presente.
En t
Considere el siguiente código dentro del método Main ():
Gsongson = new Gson ();La salida es 0. Tenga en cuenta el segundo argumento de fromjson (), que es int.clase.
doble
Considere el siguiente código dentro del método Main ():
Gsongson = new Gson ();La salida es 7.8. Tenga en cuenta el segundo argumento para fromjson (), que es doble.clase.
carbonizarse
Considere el siguiente código dentro del método Main ():
Gsongson = new Gson ();La salida es E. Tenga en cuenta el segundo argumento para fromjson (), que es char.clase.
booleano
Considere el siguiente código dentro del método Main ():
Gson gson = new Gson ();La salida es falsa. Tenga en cuenta el segundo argumento para fromjson (), que es booleano.clase.
nulo
Considere el siguiente código dentro del método Main ():
Gson gson = new Gson ();La salida es nula. Tenga en cuenta el segundo argumento para fromjson (), que es una cadena.clase, para el tipo de nulo.
Formación
Literal de matriz
Considere el siguiente código:
Gson gson = new Gson ();La salida es:
1.1 2.2 3.3 4.4Después de crear el objeto gson, se crea una matriz doble Java. A continuación, la matriz literal se convierte en una cadena JSON. Sí, aunque el código se refiere a una matriz aquí y no por un tipo primitivo, el método TOJSON () todavía se usa y, en consecuencia, desdejson () aún se usará en el receptor. El literal de la matriz de cuerdas JSON es:
"[1.1, 2.2, 3.3, 4.4] "Esta picadura es lo que se instala en la corriente que se transmite o se guarda localmente. El método fromjson () convierte la cadena de matriz JSON literal a la matriz Java (literal) en el extremo receptor.
Considere el siguiente código, que comienza con una matriz Java de cadenas, donde cada cadena es un elemento en una tabla de lectura:
Gson gson = new Gson ();La salida es:
Pen, libro de ejercicios, nulo, libro de textoDespués de crear el objeto GSON, se crea una matriz de cadenas de Java. A continuación, la matriz literal se convierte en una cadena JSON. El literal de la matriz de cuerdas JSON es:
"[" Pen "," Libro de ejercicios ", nulo," Libro de texto "]"Esta picadura es lo que se instala en la corriente que se transmite o se guarda localmente. El método fromjson () convierte la cadena de matriz JSON literal de las cuerdas de regreso a la matriz Java (literal) en el extremo receptor. Tenga en cuenta que el tipo de clase (String []) es necesario para la conversión hacia atrás.
Enviar una matriz literal con el nombre de la matriz
El problema con el esquema anterior es que, en el destino, es probable que la matriz tenga otro nombre para el código Java reconstruido. El nombre de la matriz se puede enviar, como una sola matriz de palabras, que precede a la matriz de interés para resolver este problema. El programa Java recibirá dos matrices en el extremo receptor y las interpretará adecuadamente.
Objeto
Contenido de objetos
Considere el siguiente código:
importación.Google.gson.Gson;Comienza con la importación del paquete GSON, y luego está la descripción de una clase, llamada Aclass. La clase tiene cuatro campos (propiedades) y un método. Uno de los valores de los campos es nulo, y otro no tiene ningún valor. Un código adecuado en la función Main () para esta clase es:
Gsongson = new Gson ();La salida consta de dos líneas, que es:
10, nulo, nulo, tresDespués de crear el objeto GSON, otro objeto, OBJ se instancia desde la clase, Aclass. A continuación, la matriz literal se convierte en una cadena JSON. Sí, aunque el código se refiere a un objeto instanciado aquí y no por un tipo primitivo, el método TOJSON () todavía se usa y, en consecuencia, desdejson () aún se usará en el receptor. La cadena de contenido del objeto JSON instanciado (clase) es así:
"num": 10, "str1": null, "str2: null," str3 ":" tres "," mthd ":" int mthd (int it) return it; "Tenga en cuenta los tirantes delimitantes en lugar de los soportes cuadrados para diferenciarlos de JSON. Consiste en pares de clave/valor. La clave está separada de su valor con un colon. Las parejas están separadas entre sí por comas.
Esto debe instalarse en la transmisión o guardar localmente. En realidad, la cadena JSON para el objeto es:
"num": 10, "str3": "tres"Se omite el par para el campo con valor nulo. El par para el campo con el nombre pero sin un valor también se omite. El nombre del método y su definición también se omiten. Esto significa que la información de la clase también debe transmitirse. Esto se puede hacer con una matriz JSON anterior. No se ha transmitido nada en las muestras de código de este artículo, por lo que la información de la clase todavía está disponible para ser utilizada en fromjson () .
El método fromjson () convierte la cadena de objeto JSON de nuevo a un objeto Java en el extremo receptor. Para tener el mismo nombre para el objeto, el nombre del objeto debe transmitirse (por separado) en el extremo receptor. Después de que el objeto se ha recreado en el extremo receptor, se puede acceder a los campos y métodos (llamados). En el código anterior, se llama al método para dar como resultado 5.
Conclusión
JSON es un formato serializado. Los objetos Java se pueden serializar para formato JSON para la transmisión a otra computadora o para guardar localmente. En el otro extremo, se produce la deserialización para tener el mismo objeto que reside en la fuente. La deserialización no tiene lugar cuando se guarda el objeto. No solo las matrices y los objetos instanciados se pueden serializar. Otros objetos, como mapas y colecciones, pueden ser serializados y deserializados. La biblioteca Java que se puede usar para estos procesos es la biblioteca GSON. Su método, tOjson () se utiliza para la serialización, y su otro método, deJson (), se utiliza para la deserialización.