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:
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.
Deja una respuesta