Parsear JSON a Java con Gson

Hola a todos, hoy os voy a enseñar como podemos parsear un JSON a Java con GSON.

Java y JSON no están reñidos, podemos parsear un JSON a Java usando diferentes bibliotecas, en esta ocasión, vamos a utilizar GSON, que es un JAR de Google para tratar JSON, por eso la G.

Puedes descargar el JAR aquí.

Recuerda de añadirlo a tu proyecto, sino sabes hacerlo, te dejo un manual sobre ello:

Como usar Netbeans

Este es el JAR que tenemos:


{
	"nombre": "Fernando",
	"edad": 30,
	"aficiones": [
		"Programar",
		"Deporte"
	]
}

Este fichero lo tendremos en la raíz del proyecto Java.

 

La clase de Java que vamos a usar es:


public class Persona {

    private String nombre;
    private int edad;
    private String[] aficiones;

    public Persona() {
    }

    public Persona(String nombre, int edad, String[] aficiones) {
        this.nombre = nombre;
        this.edad = edad;
        this.aficiones = aficiones;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public String[] getAficiones() {
        return aficiones;
    }

    public void setAficiones(String[] aficiones) {
        this.aficiones = aficiones;
    }

    @Override
    public String toString() {
        return "Persona{" + "nombre=" + nombre + ", edad=" + edad + ", aficiones=" + aficiones + '}';
    }
    
}


Lo primero que haremos es recoger con un BufferedReader, el contenido del archivo JSON.


String json = "";
try {
    BufferedReader br = new BufferedReader(new FileReader("ejemplo.json"));

    String linea;
    while ((linea = br.readLine()) != null) {
        json += linea;
    }

    br.close();

} catch (FileNotFoundException ex) {
    Logger.getLogger(Ejercicio_ficheros_DDR_19.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
    Logger.getLogger(Ejercicio_ficheros_DDR_19.class.getName()).log(Level.SEVERE, null, ex);
}

System.out.println(json);

El contenido del archivo JSON, seria así (no se ve de forma completa):

 

Ahora vamos a usar GSON. Creamos un objeto GSON:


Gson gson = new Gson();

Para parsear un objeto con GSON:


Persona p = gson.fromJson(json, Persona.class);

Mostramos el objeto:


System.out.println(p);

Este es el resultado:

Que el array se vea así es normal, aquí se puede ver mejor.

Os dejo el ejemplo completo:


import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Ejercicio_ficheros_DDR_19 {

    public static void main(String[] args) {

        String json = "";
        try {
            BufferedReader br = new BufferedReader(new FileReader("ejemplo.json"));

            String linea;
            while ((linea = br.readLine()) != null) {
                json += linea;
            }

            br.close();

        } catch (FileNotFoundException ex) {
            Logger.getLogger(Ejercicio_ficheros_DDR_19.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Ejercicio_ficheros_DDR_19.class.getName()).log(Level.SEVERE, null, ex);
        }

        System.out.println(json);
        
        Gson gson = new Gson();
        Persona p = gson.fromJson(json, Persona.class);
        System.out.println(p);

    }

}


Os dejo un vídeo que os puede ayudar:

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *