Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / GSON: Generar objetos java desde JSON

GSON: Generar objetos java desde JSON

Por jc mouse miércoles, julio 5, 2017

En un post anterior vimos como utilizar GSON para serializar un objeto java en JSON, en esta oportunidad se vera el procedimiento inverso, es decir dado un JSON se generara un objeto java a partir de el.

Necesitamos:

  • GSON 2.8.1
  • Netbeans 8.x
  • Conocimientos sobre JSON

Paso 1. Clases

Lo primero que debemos hacer, es establecer las clases a las que queremos convertir el JSON, para este ejemplo son:

Clase: Estudiante.java

import java.util.List;
/**
 * @see https://www.jc-mouse.net/
 * @author mouse
 */
public class Estudiante {
    
    private int id;
    private String name;
    private List<Materia> materiaList;

    public Estudiante() {}

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Materia> getMateriaList() {
        return materiaList;
    }

    public void setMateriaList(List<Materia> materiaList) {
        this.materiaList = materiaList;
    }

    @Override
    public String toString() {
        return "Estudiante:\n" + "id = " + id + "\nname = " + name + "\nMateriaList :\n" + materiaList;
    }
    
}

Clase: Materia.java

/**
 * @see https://www.jc-mouse.net/
 * @author mouse
 */
public class Materia {
    
    private String sigla;
    private String descripcion;

    public Materia() {}

    public Materia(String sigla, String descripcion) {
        this.sigla = sigla;
        this.descripcion = descripcion;
    }
    
    public String getSigla() {
        return sigla;
    }

    public void setSigla(String sigla) {
        this.sigla = sigla;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    @Override
    public String toString() {
        return "\nMateria : \n" + "sigla = " + sigla + "\ndescripcion = " + descripcion + "\n";
    }
    
}

En ambas clases se a declarado el método toString para ahorrarnos lineas de código en la impresión de los objetos.

Paso 2. JSON

El JSON que convertiríamos a su equivalente en un objeto de las clase Estudiante es:

{
  "id": 12,
  "name": "Lola Mento Mucho",
  "materiaList": [
    {
      "sigla": "IND-400",
      "descripcion": "Ingenieria Economica"
    },
    {
      "sigla": "SIS-230",
      "descripcion": "Arquitectura de Computadoras"
    }
  ]
}

Utilizando lo aprendido en el post [Generar JSON desde objetos Java] puedes crear un nuevo string json con los datos que quieras para realizar más pruebas.

Paso 3. Deserializando JSON

Para deserializar el JSON del paso 2, hacemos lo siguiente:

import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
/**
 * @see https://www.jc-mouse.net/
 * @author mouse
 */
public class Main {


    public static void main(String[] args) {
        
        String jsonString = "{\n" +
                        "  \"id\": 12,\n" +
                        "  \"name\": \"Lola Mento Mucho\",\n" +                                                
                        "  \"materiaList\": [\n" +
                        "    {\n" +
                        "      \"sigla\": \"IND-400\",\n" +
                        "      \"descripcion\": \"Ingenieria Economica\"\n" +
                        "    },\n" +
                        "    {\n" +
                        "      \"sigla\": \"SIS-230\",\n" +
                        "      \"descripcion\": \"Arquitectura de Computadoras\"\n" +
                        "    }\n" +
                        "  ]\n" +
                        "}";
        
        try{
            Gson gson = new Gson();                
            Estudiante ejemplo = gson.fromJson(jsonString, Estudiante.class);     
            if( ejemplo!= null ){
                //impresion de todo el objeto
                System.out.println(ejemplo);
                //impresion de propiedad de objeto
                System.out.println("\nNombre Estudiante : " + ejemplo.getName() );
            }
        }catch(JsonSyntaxException e){
            System.err.println("JsonSyntaxException: " + e.getMessage());
        }        
        
    }
    
}

Cuando deserializamos JSON a objetos java, debemos tener en cuenta que:

  • Si el JSON no es equivalente a la clase que queremos obtener, nos retornara NULL
  • Si el JSON tiene campos que no están presentes en las clases que se quiere convertir, estas serán ignoradas
  • Si el JSON no tiene campos que si están presentes en la clase java, estas tendrán el valor NULL o el valor predeterminado en la clase.
  • Si el JSON que se quiere deserializar no es JSON valido, saltara una excepción (JsonSyntaxException)

dicho esto, si ejecutamos el código anterior obtendremos:

gson json example

enjoy!!!

Tags

Artículos similares

Impresión de reportes

Existen diferentes métodos par imprimir reportes hechos con JasperReport en aplicaciones hechas en java, en este post te[...]

Construye la interfaz de facebook

En este tutorial veremos un poco lo que es el diseño de interfaces en android, en lugar de colocar el ejemplo de uso de[...]

Sourcetrail ahora es Open Source

Sourcetrail el explorador de código fuente de los lenguaje C, C ++, Java y Python se pasa al Software Libre y desde ahor[...]

Números narcisistas o de Armstrong

Los números narcisistas o números de Armstrong son aquellos números enteros positivos  cuya suma de las n-ésim[...]

Transacciones con Java y MariaDB

Se define como Transacción en base de datos a una «unidad lógica de trabajo» compuesta por un conjunto de operaciones qu[...]

Simplifica tu código

Project Lombok es una biblioteca para java que se conecta con su IDE (Integrated Development Environment – Entorno[...]