Gson - Guía rápida
Google Gson es una biblioteca simple basada en Java para serializar objetos Java en JSON y viceversa. Es una biblioteca de código abierto desarrollada por Google.
Los siguientes puntos destacan por qué debería utilizar esta biblioteca:
Standardized - Gson es una biblioteca estandarizada administrada por Google.
Efficient - Es una extensión confiable, rápida y eficiente de la biblioteca estándar de Java.
Optimized - La biblioteca está altamente optimizada.
Support Generics - Proporciona un amplio soporte para genéricos.
Supports complex inner classes - Admite objetos complejos con jerarquías de herencia profundas.
Características de Gson
Aquí hay una lista de algunas de las características más destacadas de Gson:
Easy to use - La API de Gson proporciona una fachada de alto nivel para simplificar los casos de uso de uso común.
No need to create mapping - La API de Gson proporciona un mapeo predeterminado para la mayoría de los objetos que se serializarán.
Performance- Gson es bastante rápido y ocupa poco espacio en la memoria. Es adecuado para sistemas o gráficos de objetos grandes.
Clean JSON - Gson crea un resultado JSON limpio y compacto que es fácil de leer.
No Dependency - La biblioteca Gson no requiere ninguna otra biblioteca aparte de JDK.
Open Source- La biblioteca Gson es de código abierto; está disponible gratuitamente.
Tres formas de procesar JSON
Gson proporciona tres formas alternativas de procesar JSON:
API de transmisión
Lee y escribe contenido JSON como eventos discretos. JsonReader y JsonWriter leer / escribir los datos como token, denominado JsonToken.
Es el enfoque más poderoso entre los tres enfoques para procesar JSON. Tiene la sobrecarga más baja y es bastante rápido en operaciones de lectura / escritura. Es análogo al analizador Stax para XML.
Modelo de árbol
Prepara una representación de árbol en memoria del documento JSON. Construye un árbol de nodos JsonObject. Es un enfoque flexible y es análogo al analizador DOM para XML.
El enlace de datos
Convierte JSON hacia y desde POJO (Plain Old Java Object) mediante el acceso de propiedad. Gson lee / escribe JSON usando adaptadores de tipo de datos. Es análogo al analizador JAXB para XML.
Configuración del entorno local
Si aún desea configurar un entorno local para el lenguaje de programación Java, esta sección lo guiará sobre cómo descargar y configurar Java en su máquina. Siga los pasos que se indican a continuación para configurar el entorno.
Java SE está disponible gratuitamente desde el enlace Descargar Java . Entonces descargas una versión basada en tu sistema operativo.
Siga las instrucciones para descargar Java y ejecutar el .exepara instalar Java en su máquina. Una vez que haya instalado Java en su máquina, deberá configurar las variables de entorno para que apunten a sus directorios de instalación correctos.
Configuración de la ruta en Windows 2000 / XP
Suponiendo que haya instalado Java en el directorio c: \ Archivos de programa \ java \ jdk -
Haga clic derecho en 'Mi PC' y seleccione 'Propiedades'.
Haga clic en el botón 'Variables de entorno' en la pestaña 'Avanzado'.
A continuación, modifique la variable 'Ruta' para que también contenga la ruta al ejecutable de Java. Por ejemplo, si la ruta está configurada actualmente en 'C: \ WINDOWS \ SYSTEM32', cambie su ruta para que lea 'C: \ WINDOWS \ SYSTEM32; c: \ Archivos de programa \ java \ jdk \ bin'.
Configuración de la ruta en Windows 95/98 / ME
Suponiendo que haya instalado Java en el directorio c: \ Archivos de programa \ java \ jdk -
Edite el archivo 'C: \ autoexec.bat' y agregue la siguiente línea al final: 'SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin'
Configuración de la ruta para Linux, UNIX, Solaris, FreeBSD
La variable de entorno PATHdebe establecerse para que apunte a donde se han instalado los binarios de Java. Consulte la documentación de su shell si tiene problemas para hacer esto.
Por ejemplo, si usa bash como su shell, entonces agregaría la siguiente línea al final de su '.bashrc: export PATH = / path / to / java: $ PATH'
Editores populares de Java
Para escribir sus programas Java, necesitará un editor de texto. Hay bastantes IDE sofisticados disponibles en el mercado. Pero por ahora, puede considerar uno de los siguientes:
Notepad - En Windows, puede usar cualquier editor de texto simple como el Bloc de notas (recomendado para este tutorial) o TextPad.
Netbeans - Es un IDE de Java que es de código abierto y gratuito que se puede descargar desde https://netbeans.org/index.html.
Eclipse - También es un IDE de Java desarrollado por la comunidad de código abierto Eclipse y se puede descargar desde https://www.eclipse.org/.
Descarga Gson Archive
Descargue la última versión del archivo jar de Gson de gson-2.3.1.jar. En el momento de escribir este tutorial, descargamos gson-2.3.1.jar y lo copiamos en la carpeta C: \> gson.
SO | Nombre de archivo |
---|---|
Ventanas | gson-2.3.1.jar |
Linux | gson-2.3.1.jar |
Mac | gson-2.3.1.jar |
Establecer entorno Gson
Selecciona el GSON_HOME variable de entorno para apuntar a la ubicación del directorio base donde se almacena Gson jar en su máquina.
SO | Salida |
---|---|
Ventanas | Establezca la variable de entorno GSON_HOME en C: \ gson |
Linux | exportar GSON_HOME = / usr / local / gson |
Mac | exportar GSON_HOME = / Library / gson |
Establecer la variable CLASSPATH
Selecciona el CLASSPATH variable de entorno para apuntar a la ubicación del jar de Gson.
SO | Salida |
---|---|
Ventanas | Establezca la variable de entorno CLASSPATH en% CLASSPATH%;% GSON_HOME% \ gson-2.3.1.jar;.; |
Linux | export CLASSPATH = $ CLASSPATH: $ GSON_HOME / gson-2.3.1.jar :. |
Mac | export CLASSPATH = $ CLASSPATH: $ GSON_HOME / gson-2.3.1.jar :. |
Antes de entrar en los detalles de la biblioteca de Google Gson, veamos una aplicación en acción. En este ejemplo, hemos creado unStudentclase. Crearemos una cadena JSON con los detalles del estudiante y la deserializaremos parastudent objeto y luego serialícelo en una cadena JSON.
Ejemplo
Cree un archivo de clase Java llamado GsonTester en C: \> GSON_WORKSPACE.
File − GsonTester.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonTester {
public static void main(String[] args) {
String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";
GsonBuilder builder = new GsonBuilder();
builder.setPrettyPrinting();
Gson gson = builder.create();
Student student = gson.fromJson(jsonString, Student.class);
System.out.println(student);
jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class Student {
private String name;
private int age;
public Student(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Student [ name: "+name+", age: "+ age+ " ]";
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecute GsonTester para ver el resultado:
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
Student [ name: Mahesh, age: 21 ]
{
"name" : "Mahesh",
"age" : 21
}
Pasos para recordar
Los siguientes son los pasos importantes que se deben considerar aquí.
Paso 1: crea un objeto Gson usando GsonBuilder
Crea un objeto Gson. Es un objeto reutilizable.
GsonBuilder builder = new GsonBuilder();
builder.setPrettyPrinting();
Gson gson = builder.create();
Paso 2: deserializar JSON en un objeto
Utilice el método fromJson () para obtener el objeto del JSON. Pase la cadena Json / fuente de la cadena Json y el tipo de objeto como parámetro.
//Object to JSON Conversion
Student student = gson.fromJson(jsonString, Student.class);
Paso 3: serializar el objeto en JSON
Utilice el método toJson () para obtener la representación de cadena JSON de un objeto.
//Object to JSON Conversion
jsonString = gson.toJson(student);
Gson es la clase de actor principal de la biblioteca de Google Gson. Proporciona funcionalidades para convertir objetos Java en construcciones JSON coincidentes y viceversa. Gson se construye primero usando GsonBuilder y luego, los métodos toJson (Object) o fromJson (String, Class) se usan para leer / escribir construcciones JSON.
Declaración de clase
A continuación se muestra la declaración de com.google.gson.Gson clase -
public final class Gson
extends Object
Constructores
No Señor | Constructor y descripción |
---|---|
1 | Gson() Construye un objeto Gson con la configuración predeterminada. |
Métodos de clase
No Señor | Método y descripción |
---|---|
1 | <T> T fromJson(JsonElement json, Class<T> classOfT) Este método deserializa la lectura de Json del árbol de análisis especificado en un objeto del tipo especificado. |
2 | <T> T fromJson(JsonElement json, Type typeOfT) Este método deserializa la lectura de Json del árbol de análisis especificado en un objeto del tipo especificado. |
3 | <T> T fromJson(JsonReader reader, Type typeOfT) Lee el siguiente valor JSON del lector y lo convierte en un objeto de tipo typeOfT. |
4 | <T> T fromJson(Reader json, Class<T> classOfT) Este método deserializa la lectura de Json del lector especificado en un objeto de la clase especificada. |
5 | <T> T fromJson(Reader json, Type typeOfT) Este método deserializa la lectura de Json del lector especificado en un objeto del tipo especificado. |
6 | <T> T fromJson(String json, Class<T> classOfT) Este método deserializa el Json especificado en un objeto de la clase especificada. |
7 | <T> T fromJson(String json, Type typeOfT) Este método deserializa el Json especificado en un objeto del tipo especificado. |
8 | <T> TypeAdapter<T> getAdapter(Class<T> type) Devuelve el adaptador de tipo para el tipo. |
9 | <T> TypeAdapter<T> getAdapter(TypeToken<T> type) Devuelve el adaptador de tipo para el tipo. |
10 | <T> TypeAdapter<T> getDelegateAdapter(TypeAdapterFactory skipPast, TypeToken<T> type) Este método se utiliza para obtener un adaptador de tipo alternativo para el tipo especificado. |
11 | String toJson(JsonElement jsonElement) Convierte un árbol de JsonElements en su representación JSON equivalente. |
12 | void toJson(JsonElement jsonElement, Appendable writer) Escribe el JSON equivalente para un árbol de JsonElements. |
13 | void toJson(JsonElement jsonElement, JsonWriter writer) Escribe el JSON para jsonElement en el escritor. |
14 | String toJson(Object src) Este método serializa el objeto especificado en su representación Json equivalente. |
15 | void toJson(Object src, Appendable writer) Este método serializa el objeto especificado en su representación Json equivalente. |
dieciséis | String toJson(Object src, Type typeOfSrc) Este método serializa el objeto especificado, incluidos los de tipos genéricos, en su representación Json equivalente. |
17 | void toJson(Object src, Type typeOfSrc, Appendable writer) Este método serializa el objeto especificado, incluidos los de tipos genéricos, en su representación Json equivalente. |
18 | void toJson(Object src, Type typeOfSrc, JsonWriter writer) Escribe la representación JSON de src de tipo typeOfSrc en el escritor. |
19 | JsonElement toJsonTree(Object src) Este método serializa el objeto especificado en su representación equivalente como un árbol de JsonElements. |
20 | JsonElement toJsonTree(Object src, Type typeOfSrc) Este método serializa el objeto especificado, incluidos los de tipos genéricos, en su representación equivalente como un árbol de JsonElements. |
21 | String toString() |
Métodos heredados
Esta clase hereda métodos de la siguiente clase:
- java.lang.Object
Ejemplo
Cree el siguiente programa Java utilizando cualquier editor de su elección y guárdelo en, digamos, C: /> GSON_WORKSPACE
File − GsonTester.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonTester {
public static void main(String[] args) {
String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";
GsonBuilder builder = new GsonBuilder();
builder.setPrettyPrinting();
Gson gson = builder.create();
Student student = gson.fromJson(jsonString, Student.class);
System.out.println(student);
jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class Student {
private String name;
private int age;
public Student(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Student [ name: "+name+", age: "+ age+ " ]";
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecute GsonTester para ver el resultado:
C:\GSON_WORKSPACE>java GsonTester
Verificar la salida
Student [ name: Mahesh, age: 21 ]
{
"name" : "Mahesh",
"age" : 21
}
Serialicemos un objeto Java en un archivo Json y luego leamos ese archivo Json para recuperar el objeto. En este ejemplo, hemos creado unStudentclase. Crearemos unstudent.json archivo que tendrá un json representacion de Student objeto.
Ejemplo
Cree un archivo de clase Java llamado GsonTester en C:\>GSON_WORKSPACE.
Archivo - GsonTester.java
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonTester {
public static void main(String args[]) {
GsonTester tester = new GsonTester();
try {
Student student = new Student();
student.setAge(10);
student.setName("Mahesh");
tester.writeJSON(student);
Student student1 = tester.readJSON();
System.out.println(student1);
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
}
private void writeJSON(Student student) throws IOException {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
FileWriter writer = new FileWriter("student.json");
writer.write(gson.toJson(student));
writer.close();
}
private Student readJSON() throws FileNotFoundException {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
BufferedReader bufferedReader = new BufferedReader(
new FileReader("student.json"));
Student student = gson.fromJson(bufferedReader, Student.class);
return student;
}
}
class Student {
private String name;
private int age;
public Student(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Student [ name: "+name+", age: "+ age+ " ]";
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecute GsonTester para ver el resultado:
C:\GSON_WORKSPACE>java GsonTester
Verificar la salida
Student [ name: Mahesh, age: 10 ]
La API de enlace de datos se utiliza para convertir JSON hacia y desde POJO (Objeto Java antiguo simple) mediante el acceso de propiedad o mediante anotaciones. Es de dos tipos.
Primitives Data Binding - Convierte JSON hacia y desde Java Maps, Lists, Strings, Numbers, Booleanos y objetos NULL.
Objects Data Binding - Convierte JSON hacia y desde cualquier tipo de JAVA.
Gson lee / escribe JSON para ambos tipos de enlaces de datos. El enlace de datos es análogo al analizador JAXB para XML.
Enlace de datos primitivos
El enlace de datos primitivos se refiere al mapeo de JSON a tipos de datos JAVA Core y colecciones incorporadas. Gson proporciona varios adaptadores incorporados que se pueden usar para serializar / deserializar tipos de datos primitivos.
Ejemplo
Veamos el enlace de datos primitivos en acción. Aquí asignaremos los tipos básicos de JAVA directamente a JSON y viceversa.
Cree un archivo de clase Java llamado GsonTester en C:\>Gson_WORKSPACE.
File − GsonTester.java
import java.util.Arrays;
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Gson gson = new Gson();
String name = "Mahesh Kumar";
long rollNo = 1;
boolean verified = false;
int[] marks = {100,90,85};
//Serialization
System.out.println("{");
System.out.println("name: " + gson.toJson(name) +",");
System.out.println("rollNo: " + gson.toJson(rollNo) +",");
System.out.println("verified: " + gson.toJson(verified) +",");
System.out.println("marks:" + gson.toJson(marks));
System.out.println("}");
//De-serialization
name = gson.fromJson("\"Mahesh Kumar\"", String.class);
rollNo = gson.fromJson("1", Long.class);
verified = gson.fromJson("false", Boolean.class);
marks = gson.fromJson("[100,90,85]", int[].class);
System.out.println("name: " + name);
System.out.println("rollNo: " + rollNo);
System.out.println("verified: " +verified);
System.out.println("marks:" + Arrays.toString(marks));
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecuta el GsonTester para ver el resultado -
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
{
name: "Mahesh Kumar",
rollNo: 1,
verified: false,
marks:[100,90,85]
}
name: Mahesh Kumar
rollNo: 1
verified: false
marks:[100, 90, 85]
El enlace de datos de objetos se refiere al mapeo de JSON a cualquier objeto JAVA.
//Create a Gson instance
Gson gson = new Gson();
//map Student object to JSON content
String jsonString = gson.toJson(student);
//map JSON content to Student object
Student student1 = gson.fromJson(jsonString, Student.class);
Ejemplo
Veamos el enlace de datos de objetos en acción. Aquí asignaremos el objeto JAVA directamente a JSON y viceversa.
Cree un archivo de clase Java llamado GsonTester en C: \> GSON_WORKSPACE.
Archivo - GsonTester.java
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Gson gson = new Gson();
Student student = new Student();
student.setAge(10);
student.setName("Mahesh");
String jsonString = gson.toJson(student);
System.out.println(jsonString);
Student student1 = gson.fromJson(jsonString, Student.class);
System.out.println(student1);
}
}
class Student {
private String name;
private int age;
public Student(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Student [ name: "+name+", age: "+ age+ " ]";
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecuta el GsonTester para ver el resultado -
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
{"name":"Mahesh","age":10}
Student [ name: Mahesh, age: 10 ]
Tree Model prepara una representación de árbol en memoria del documento JSON. Construye un árbol de nodos JsonObject. Es un enfoque flexible y es análogo al analizador DOM para XML.
Crear árbol desde JSON
JsonParser proporciona un puntero al nodo raíz del árbol después de leer el JSON. El nodo raíz se puede utilizar para recorrer el árbol completo. Considere el siguiente fragmento de código para obtener el nodo raíz de una cadena JSON proporcionada.
//Create an JsonParser instance
JsonParser parser = new JsonParser();
String jsonString =
"{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
//create tree from JSON
JsonElement rootNode = parser.parse(jsonString);
Modelo de árbol transversal
Obtenga cada nodo usando la ruta relativa al nodo raíz mientras atraviesa el árbol y procesa los datos. El siguiente fragmento de código muestra cómo atravesar un árbol.
JsonObject details = rootNode.getAsJsonObject();
JsonElement nameNode = details.get("name");
System.out.println("Name: " +nameNode.getAsString());
JsonElement ageNode = details.get("age");
System.out.println("Age: " + ageNode.getAsInt());
Ejemplo
Cree un archivo de clase Java llamado GsonTester en C: \> GSON_WORKSPACE.
File − GsonTester.java
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;
public class GsonTester {
public static void main(String args[]) {
String jsonString =
"{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
JsonParser parser = new JsonParser();
JsonElement rootNode = parser.parse(jsonString);
if (rootNode.isJsonObject()) {
JsonObject details = rootNode.getAsJsonObject();
JsonElement nameNode = details.get("name");
System.out.println("Name: " +nameNode.getAsString());
JsonElement ageNode = details.get("age");
System.out.println("Age: " + ageNode.getAsInt());
JsonElement verifiedNode = details.get("verified");
System.out.println("Verified: " + (verifiedNode.getAsBoolean() ? "Yes":"No"));
JsonArray marks = details.getAsJsonArray("marks");
for (int i = 0; i < marks.size(); i++) {
JsonPrimitive value = marks.get(i).getAsJsonPrimitive();
System.out.print(value.getAsInt() + " ");
}
}
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecuta el GsonTester para ver el resultado -
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
Name: Mahesh Kumar
Age: 21
Verified: No
100 90 85
La API de transmisión se utiliza para leer token JSON por token. Lee y escribe contenido JSON como eventos discretos.JsonReader y JsonWriter leer / escribir los datos como token, denominado JsonToken.
Es el enfoque más poderoso entre los tres enfoques para procesar JSON. Tiene la sobrecarga más baja y es bastante rápido en operaciones de lectura / escritura. Es análogo al analizador Stax para XML.
En este capítulo, mostraremos el uso de las API de transmisión GSON para leer datos JSON. La API de transmisión funciona con el concepto de token y todos los detalles de Json deben manejarse con cuidado.
//create JsonReader object and pass it the json source or json text.
JsonReader reader = new JsonReader(new StringReader(jsonString));
//start reading json
reader.beginObject();
//get the next token
JsonToken token = reader.peek();
//check the type of the token
if (token.equals(JsonToken.NAME)) {
//get the current token
fieldname = reader.nextName();
}
Ejemplo
Veamos JsonReaderen acción. Cree un archivo de clase Java llamadoGsonTester en C: \> GSON_WORKSPACE.
Archivo - GsonTester.java
import java.io.IOException;
import java.io.StringReader;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
public class GsonTester {
public static void main(String args[]) {
String jsonString =
"{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
JsonReader reader = new JsonReader(new StringReader(jsonString));
try {
handleJsonObject(reader);
}
catch (IOException e) {
e.printStackTrace();
}
}
private static void handleJsonObject(JsonReader reader) throws IOException {
reader.beginObject();
String fieldname = null;
while (reader.hasNext()) {
JsonToken token = reader.peek();
if (token.equals(JsonToken.BEGIN_ARRAY)) {
System.out.print("Marks [ ");
handleJsonArray(reader);
System.out.print("]");
} else if (token.equals(JsonToken.END_OBJECT)) {
reader.endObject();
return;
} else {
if (token.equals(JsonToken.NAME)) {
//get the current token
fieldname = reader.nextName();
}
if ("name".equals(fieldname)) {
//move to next token
token = reader.peek();
System.out.println("Name: "+reader.nextString());
}
if("age".equals(fieldname)) {
//move to next token
token = reader.peek();
System.out.println("Age:" + reader.nextInt());
}
if("verified".equals(fieldname)) {
//move to next token
token = reader.peek();
System.out.println("Verified:" + reader.nextBoolean());
}
}
}
}
private static void handleJsonArray(JsonReader reader) throws IOException {
reader.beginArray();
String fieldname = null;
while (true) {
JsonToken token = reader.peek();
if (token.equals(JsonToken.END_ARRAY)) {
reader.endArray();
break;
} else if (token.equals(JsonToken.BEGIN_OBJECT)) {
handleJsonObject(reader);
} else if (token.equals(JsonToken.END_OBJECT)) {
reader.endObject();
} else {
System.out.print(reader.nextInt() + " ");
}
}
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecuta el GsonTester para ver el resultado -
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
Name: Mahesh Kumar
Age:21
Verified:false
Marks [ 100 90 85 ]
En este capítulo, discutiremos la serialización / deserialización de matrices, colecciones y genéricos.
Ejemplo de matriz
int[] marks = {100,90,85};
//Serialization
System.out.println("marks:" + gson.toJson(marks));
//De-serialization
marks = gson.fromJson("[100,90,85]", int[].class);
System.out.println("marks:" + Arrays.toString(marks));
Ejemplo
Veamos la serialización / deserialización de matrices en acción. Cree un archivo de clase Java llamadoGsonTester en C: \> GSON_WORKSPACE.
File − GsonTester.java
import java.util.Arrays;
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Gson gson = new Gson();
int[] marks = {100,90,85};
String[] names = {"Ram","Shyam","Mohan"};
//Serialization
System.out.print("{");
System.out.print("marks:" + gson.toJson(marks) + ",");
System.out.print("names:" + gson.toJson(names));
System.out.println("}");
//De-serialization
marks = gson.fromJson("[100,90,85]", int[].class);
names = gson.fromJson("[\"Ram\",\"Shyam\",\"Mohan\"]", String[].class);
System.out.println("marks:" + Arrays.toString(marks));
System.out.println("names:" + Arrays.toString(names));
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecute GsonTester para ver el resultado:
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
{marks:[100,90,85],names:["Ram","Shyam","Mohan"]}
marks:[100, 90, 85]
names:[Ram, Shyam, Mohan]
Ejemplo de colecciones
List marks = new ArrayList();
//Serialization
System.out.println("marks:" + gson.toJson(marks));
//De-serialization
//get the type of the collection.
Type listType = new TypeToken<list>(){}.getType();
//pass the type of collection
marks = gson.fromJson("[100,90,85]", listType);
System.out.println("marks:" +marks);</list>
Ejemplo
Veamos la serialización / deserialización de colecciones en acción. Cree un archivo de clase Java llamadoGsonTester en C: \> GSON_WORKSPACE.
File − GsonTester.java
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonTester {
public static void main(String args[]) {
Gson gson = new Gson();
Collection<Integer> marks = new ArrayList<Integer>();
marks.add(100);
marks.add(90);
marks.add(85);
//Serialization
System.out.print("{");
System.out.print("marks:" + gson.toJson(marks));
System.out.println("}");
//De-serialization
Type listType = new TypeToken<Collection<Integer>>(){}.getType();
marks = gson.fromJson("[100,90,85]", listType);
System.out.println("marks:" +marks);
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecuta el GsonTester para ver el resultado -
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
{marks:[100,90,85]}
marks:[100, 90, 85]
Ejemplo de genéricos
Gson utiliza la API de reflexión de Java para obtener el tipo de objeto al que se asignará un texto Json. Pero con los genéricos, esta información se pierde durante la serialización. Para contrarrestar este problema, Gson ofrece una clasecom.google.gson.reflect.TypeToken para almacenar el tipo de objeto genérico.
Ejemplo
Veamos la serialización / deserialización de Generics en acción. Cree un archivo de clase Java llamadoGsonTester en C: \> GSON_WORKSPACE.
File − GsonTester.java
import java.lang.reflect.Type;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonTester {
public static void main(String args[]) {
// create a shape class of type circle.
Shape<Circle> shape = new Shape<Circle>();
// Create a Circle object
Circle circle = new Circle(5.0);
//assign circle to shape
shape.setShape(circle);
Gson gson = new Gson();
// Define a Type shapeType of type circle.
Type shapeType = new TypeToken<Shape<Circle>>() {}.getType();
//Serialize the json as ShapeType
String jsonString = gson.toJson(shape, shapeType);
System.out.println(jsonString);
Shape shape1 = gson.fromJson(jsonString, Shape.class);
System.out.println(shape1.get().getClass());
System.out.println(shape1.get().toString());
System.out.println(shape1.getArea());
Shape shape2 = gson.fromJson(jsonString, shapeType);
System.out.println(shape2.get().getClass());
System.out.println(shape2.get().toString());
System.out.println(shape2.getArea());
}
}
class Shape <T> {
public T shape;
public void setShape(T shape) {
this.shape = shape;
}
public T get() {
return shape;
}
public double getArea() {
if(shape instanceof Circle) {
return ((Circle) shape).getArea();
} else {
return 0.0;
}
}
}
class Circle {
private double radius;
public Circle(double radius){
this.radius = radius;
}
public String toString() {
return "Circle";
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double getArea() {
return (radius*radius*3.14);
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecuta el GsonTester para ver el resultado -
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
{"shape":{"radius":5.0}}
class com.google.gson.internal.LinkedTreeMap
{radius = 5.0}
0.0
class Circle
Circle
78.5
En este capítulo, explicaremos la serialización / deserialización de clases que tienen clases internas.
Ejemplo de clase interna anidada
Student student = new Student();
student.setRollNo(1);
Student.Name name = student.new Name();
name.firstName = "Mahesh";
name.lastName = "Kumar";
student.setName(name);
//serialize inner class object
String nameString = gson.toJson(name);
System.out.println(nameString);
//deserialize inner class object
name = gson.fromJson(nameString,Student.Name.class);
System.out.println(name.getClass());
Ejemplo
Veamos un ejemplo de serialización / deserialización de una clase con una clase interna en acción. Cree un archivo de clase Java llamadoGsonTester en C: \> GSON_WORKSPACE.
File − GsonTester.java
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Student student = new Student();
student.setRollNo(1);
Student.Name name = student.new Name();
name.firstName = "Mahesh";
name.lastName = "Kumar";
student.setName(name);
Gson gson = new Gson();
String jsonString = gson.toJson(student);
System.out.println(jsonString);
student = gson.fromJson(jsonString, Student.class);
System.out.println("Roll No: "+ student.getRollNo());
System.out.println("First Name: "+ student.getName().firstName);
System.out.println("Last Name: "+ student.getName().lastName);
String nameString = gson.toJson(name);
System.out.println(nameString);
name = gson.fromJson(nameString,Student.Name.class);
System.out.println(name.getClass());
System.out.println("First Name: "+ name.firstName);
System.out.println("Last Name: "+ name.lastName);
}
}
class Student {
private int rollNo;
private Name name;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
class Name {
public String firstName;
public String lastName;
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecute GsonTester para ver el resultado:
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
{"rollNo":1,"name":{"firstName":"Mahesh","lastName":"Kumar"}}
Roll No: 1
First Name: Mahesh
Last Name: Kumar
{"firstName":"Mahesh","lastName":"Kumar"}
class Student$Name
First Name: Mahesh
Last Name: Kumar
Ejemplo de clase interna estática anidada
Student student = new Student();
student.setRollNo(1);
Student.Name name = new Student.Name();
name.firstName = "Mahesh";
name.lastName = "Kumar";
student.setName(name);
//serialize static inner class object
String nameString = gson.toJson(name);
System.out.println(nameString);
//deserialize static inner class object
name = gson.fromJson(nameString,Student.Name.class);
System.out.println(name.getClass());
Ejemplo
Veamos un ejemplo de serialización / deserialización de una clase con una clase interna estática en acción. Cree un archivo de clase Java llamado GsonTester en C: \> GSON_WORKSPACE.
File − GsonTester.java
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Student student = new Student();
student.setRollNo(1);
Student.Name name = new Student.Name();
name.firstName = "Mahesh";
name.lastName = "Kumar";
student.setName(name);
Gson gson = new Gson();
String jsonString = gson.toJson(student);
System.out.println(jsonString);
student = gson.fromJson(jsonString, Student.class);
System.out.println("Roll No: "+ student.getRollNo());
System.out.println("First Name: "+ student.getName().firstName);
System.out.println("Last Name: "+ student.getName().lastName);
String nameString = gson.toJson(name);
System.out.println(nameString);
name = gson.fromJson(nameString,Student.Name.class);
System.out.println(name.getClass());
System.out.println("First Name: "+ name.firstName);
System.out.println("Last Name: "+ name.lastName);
}
}
class Student {
private int rollNo;
private Name name;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
static class Name {
public String firstName;
public String lastName;
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecuta el GsonTester para ver el resultado -
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
{"rollNo":1,"name":{"firstName":"Mahesh","lastName":"Kumar"}}
Roll No: 1
First Name: Mahesh
Last Name: Kumar
{"firstName":"Mahesh","lastName":"Kumar"}
class Student$Name
First Name: Mahesh
Last Name: Kumar
Gson realiza la serialización / deserialización de objetos utilizando sus adaptadores incorporados. También admite adaptadores personalizados. Analicemos cómo puede crear un adaptador personalizado y cómo puede usarlo.
Crear un adaptador personalizado
Cree un adaptador personalizado ampliando el TypeAdapterclass y pasándole el tipo de objeto objetivo. Anular elread y write métodos para realizar deserialización y serialización personalizadas, respectivamente.
class StudentAdapter extends TypeAdapter<Student> {
@Override
public Student read(JsonReader reader) throws IOException {
...
}
@Override
public void write(JsonWriter writer, Student student) throws IOException {
}
}
Registrar el adaptador personalizado
Registre el adaptador personalizado usando GsonBuilder y cree una instancia de Gson usando GsonBuilder.
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Student.class, new StudentAdapter());
Gson gson = builder.create();
Utilice el adaptador
Gson ahora usará el adaptador personalizado para convertir texto Json en objeto y viceversa.
String jsonString = "{\"name\":\"Mahesh\", \"rollNo\":1}";
Student student = gson.fromJson(jsonString, Student.class);
System.out.println(student);
jsonString = gson.toJson(student);
System.out.println(jsonString);
Ejemplo
Veamos un ejemplo de adaptador de tipo personalizado en acción. Cree un archivo de clase Java llamadoGsonTester en C: \> GSON_WORKSPACE.
File − GsonTester.java
import java.io.IOException;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
public class GsonTester {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Student.class, new StudentAdapter());
builder.setPrettyPrinting();
Gson gson = builder.create();
String jsonString = "{\"name\":\"Mahesh\", \"rollNo\":1}";
Student student = gson.fromJson(jsonString, Student.class);
System.out.println(student);
jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class StudentAdapter extends TypeAdapter<Student> {
@Override
public Student read(JsonReader reader) throws IOException {
Student student = new Student();
reader.beginObject();
String fieldname = null;
while (reader.hasNext()) {
JsonToken token = reader.peek();
if (token.equals(JsonToken.NAME)) {
//get the current token
fieldname = reader.nextName();
}
if ("name".equals(fieldname)) {
//move to next token
token = reader.peek();
student.setName(reader.nextString());
}
if("rollNo".equals(fieldname)) {
//move to next token
token = reader.peek();
student.setRollNo(reader.nextInt());
}
}
reader.endObject();
return student;
}
@Override
public void write(JsonWriter writer, Student student) throws IOException {
writer.beginObject();
writer.name("name");
writer.value(student.getName());
writer.name("rollNo");
writer.value(student.getRollNo());
writer.endObject();
}
}
class Student {
private int rollNo;
private String name;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "Student[ name = "+name+", roll no: "+rollNo+ "]";
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecuta el GsonTester para ver el resultado -
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
Student[ name = Mahesh, roll no: 1]
{
"name": "Mahesh",
"rollNo": 1
}
De forma predeterminada, Gson genera contenido Json optimizado ignorando los valores NULL. Pero GsonBuilder proporciona indicadores para mostrar valores NULL en la salida de Json usando elGsonBuilder.serializeNulls() método.
GsonBuilder builder = new GsonBuilder();
builder.serializeNulls();
Gson gson = builder.create();
Ejemplo sin llamada serializeNulls
Cree un archivo de clase Java llamado GsonTester en C: \> GSON_WORKSPACE.
Archivo - GsonTester.java
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Gson gson = new Gson();
Student student = new Student();
student.setRollNo(1);
String jsonString = gson.toJson(student);
System.out.println(jsonString);
student = gson.fromJson(jsonString, Student.class);
System.out.println(student);
}
}
class Student {
private int rollNo;
private String name;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "Student[ name = "+name+", roll no: "+rollNo+ "]";
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecute GsonTester para ver el resultado:
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
{"rollNo": 1}
Student[ name = null, roll no: 1]
Ejemplo con llamada serializeNulls
Cree un archivo de clase Java llamado GsonTester en C: \> GSON_WORKSPACE.
Archivo - GsonTester.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonTester {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
builder.serializeNulls();
builder.setPrettyPrinting();
Gson gson = builder.create();
Student student = new Student();
student.setRollNo(1);
String jsonString = gson.toJson(student);
System.out.println(jsonString);
student = gson.fromJson(jsonString, Student.class);
System.out.println(student);
}
}
class Student {
private int rollNo;
private String name;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "Student[ name = "+name+", roll no: "+rollNo+ "]";
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecuta el GsonTester para ver el resultado -
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
{
"rollNo": 1,
"name": null
}
Student[ name = null, roll no: 1]
Gson proporciona @Sinceanotación para controlar la serialización / deserialización de Json de una clase en función de sus diversas versiones. Considere la siguiente clase con soporte de versiones. En esta clase, inicialmente hemos definido dos variablesrollNo y name y luego agregamos verifiedcomo una nueva variable. Usando @Desde, hemos definidorollNo y name a partir de la versión 1.0 y verificado que es de la versión 1.1.
class Student {
@Since(1.0)
private int rollNo;
@Since(1.0)
private String name;
@Since(1.1)
private boolean verified;
}
GsonBuilder proporciona setVersion() método para serializar dicha clase versionada.
GsonBuilder builder = new GsonBuilder();
builder.setVersion(1.0);
Gson gson = builder.create();
Ejemplo
Veamos un ejemplo de soporte de versiones en acción. Cree un archivo de clase Java llamadoGsonTester en C: \> GSON_WORKSPACE.
Archivo - GsonTester.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Since;
public class GsonTester {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
builder.setVersion(1.0);
Gson gson = builder.create();
Student student = new Student();
student.setRollNo(1);
student.setName("Mahesh Kumar");
student.setVerified(true);
String jsonString = gson.toJson(student);
System.out.println(jsonString);
gson = new Gson();
jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class Student {
@Since(1.0)
private int rollNo;
@Since(1.0)
private String name;
@Since(1.1)
private boolean verified;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setVerified(boolean verified) {
this.verified = verified;
}
public boolean isVerified() {
return verified;
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecute GsonTester para ver el resultado:
C:\GSON_WORKSPACE>java GsonTester
Verifique la salida.
{"rollNo":1,"name":"Mahesh Kumar"}
{"rollNo":1,"name":"Mahesh Kumar","verified":true}
De forma predeterminada, GSON excluye los campos estáticos y transitorios del proceso de serialización / deserialización. Echemos un vistazo al siguiente ejemplo.
Ejemplo
Cree un archivo de clase Java llamado GsonTester en C: \> GSON_WORKSPACE.
File − GsonTester.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonTester {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
Student student = new Student();
student.setRollNo(1);
student.setName("Mahesh Kumar");
student.setVerified(true);
student.setId(1);
student.className = "VI";
String jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class Student {
private int rollNo;
private String name;
private boolean verified;
private transient int id;
public static String className;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setVerified(boolean verified) {
this.verified = verified;
}
public boolean isVerified() {
return verified;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecuta el GsonTester para ver el resultado -
C:\GSON_WORKSPACE>java GsonTester
Verificar la salida
{"rollNo":1,"name":"Mahesh Kumar","verified":true}
Uso de excludeFieldsWithModifiers
GsonBuilder proporciona control sobre la exclusión de campos con un modificador particular utilizando el método excludeFieldsWithModifiers () del proceso de serialización / deserialización. Vea el siguiente ejemplo.
Ejemplo
Cree un archivo de clase Java llamado GsonTester en C: \> GSON_WORKSPACE.
File − GsonTester.java
import java.lang.reflect.Modifier;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonTester {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
builder.excludeFieldsWithModifiers(Modifier.TRANSIENT);
Gson gson = builder.create();
Student student = new Student();
student.setRollNo(1);
student.setName("Mahesh Kumar");
student.setVerified(true);
student.setId(1);
student.className = "VI";
String jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class Student {
private int rollNo;
private String name;
private boolean verified;
private transient int id;
public static String className;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setVerified(boolean verified) {
this.verified = verified;
}
public boolean isVerified() {
return verified;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecuta el GsonTester para ver el resultado -
C:\GSON_WORKSPACE>java GsonTester
Verificar la salida
{"rollNo":1,"name":"Mahesh Kumar","verified":true,"className":"VI"}
Uso de la anotación @Expose
Gson proporciona @Exposeanotación para controlar la serialización / deserialización de Json de una clase en función de su alcance. Considere la siguiente clase con una variable que tiene@Exposeapoyo. En esta clase,name y rollnolas variables deben exponerse para su serialización. Entonces usamos elGsonBuilder.excludeFieldsWithoutExposeAnnotation()método para indicar que solo las variables expuestas deben ser serializadas / deserializadas. Vea el siguiente ejemplo.
Ejemplo
Cree un archivo de clase Java llamado GsonTester en C: \> GSON_WORKSPACE.
File − GsonTester.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Expose;
public class GsonTester {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
builder.excludeFieldsWithoutExposeAnnotation();
Gson gson = builder.create();
Student student = new Student();
student.setRollNo(1);
student.setName("Mahesh Kumar");
student.setVerified(true);
student.setId(1);
student.className = "VI";
String jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class Student {
@Expose
private int rollNo;
@Expose
private String name;
private boolean verified;
private int id;
public static String className;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setVerified(boolean verified) {
this.verified = verified;
}
public boolean isVerified() {
return verified;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Verifica el resultado
Compila las clases usando javac compilador de la siguiente manera:
C:\GSON_WORKSPACE>javac GsonTester.java
Ahora ejecuta el GsonTester para ver el resultado -
C:\GSON_WORKSPACE>java GsonTester
Verificar la salida
{"rollNo":1,"name":"Mahesh Kumar"}