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.