Introducción a JSON
JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos. Gson
es una biblioteca de Java desarrollada por Google que permite convertir objetos Java en su representación JSON y viceversa.
Configuración del proyecto
Primero, debemos incluir Gson en el proyecto. Usando Maven, añadimos esta dependencia al pom.xml
:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.11.0</version></dependency>
Creación de clases para representar datos JSON
Vamos a crear algunas clases que representen una estructura de datos:
1import java.util.List;2
3public class Persona {4 private String nombre;5 private int edad;6 private List<String> hobbies;7 private Direccion direccion;8
9 // Constructores, getters y setters10}11
12public class Direccion {13 private String calle;14 private String ciudad;15 private int codigoPostal;16
17 // Constructores, getters y setters18}19
20public class Empresa {21 private String nombre;22 private List<Persona> empleados;23
24 // Constructores, getters y setters25}
4. Serialización: De objeto Java a JSON
Para convertir objetos Java a JSON:
1import com.google.gson.Gson;2import com.google.gson.GsonBuilder;3import java.io.FileWriter;4import java.io.IOException;5import java.nio.charset.StandardCharsets;6import java.util.Arrays;7
8public class SerializeJSON {9 public static void main(String[] args) {10 Direccion direccion = new Direccion("Calle Principal 123", "Salta", 28001);11 Persona persona = new Persona("María Gómez", 30, Arrays.asList("leer", "viajar"), direccion);12 Empresa empresa = new Empresa("TechCop", Arrays.asList(persona));13
14 Gson gson = new GsonBuilder().setPrettyPrinting().create();15 String json = gson.toJson(empresa);16
17 try (FileWriter writer = new FileWriter("empresa.json", StandardCharsets.UTF_8)) {18 writer.write(json);19 } catch (IOException e) {20 e.printStackTrace();21 }22 }23}
Este código creará un archivo empresa.json
con el contenido JSON formateado y codificado en UTF-8. Esto es para que los caracteres especiales se muestren correctamente.
Deserialización: De JSON a objeto Java
Para leer un archivo JSON y convertirlo en objetos Java:
1import com.google.gson.Gson;2import java.io.FileReader;3import java.io.IOException;4import java.nio.charset.StandardCharsets;5
6public class DeserializeJSON {7 public static void main(String[] args) {8 Gson gson = new Gson();9
10 try (FileReader reader = new FileReader("empresa.json", StandardCharsets.UTF_8)) {11 Empresa empresa = gson.fromJson(reader, Empresa.class);12 System.out.println("Nombre de la empresa: " + empresa.getNombre());13 for (Persona empleado : empresa.getEmpleados()) {14 System.out.println("Empleado: " + empleado.getNombre());15 System.out.println("Ciudad: " + empleado.getDirección().getCiudad());16 }17 } catch (IOException e) {18 e.printStackTrace();19 }20 }21}