Trabajo con JSON en Java: análisis y serialización
JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos, ampliamente utilizado en aplicaciones web modernas, API y microservicios. En Java, trabajar con JSON se ha convertido en una parte esencial del desarrollo, ya sea para analizar respuestas del servidor, serializar objetos para almacenamiento o transferir datos entre componentes del sistema. En este artículo, analizaremos en detalle cómo realizar el análisis y la serialización de JSON en Java utilizando dos bibliotecas populares: Gson de Google y Jackson.
1. ¿Qué es JSON y por qué es necesario en Java?
JSON es un formato de texto basado en pares "clave-valor" y listas ordenadas. Es fácil de leer tanto para humanos como para máquinas, lo que lo hace ideal para transferir datos entre el servidor y el cliente. En Java, JSON se utiliza para:
- Intercambio de datos a través de REST API (por ejemplo, obtener datos del servidor o enviar un formulario).
- Archivos de configuración — muchos frameworks utilizan JSON para configurar aplicaciones.
- Serialización de objetos — convertir objetos Java en una cadena JSON para guardarlos en un archivo o base de datos.
- Deserialización — restaurar objetos Java a partir de una cadena JSON.
Java no tiene soporte integrado para JSON hasta la versión 9 (cuando apareció el módulo java.json), por lo que los desarrolladores suelen utilizar bibliotecas de terceros como Gson y Jackson. Veamos ambas.
2. Análisis de JSON con Gson
Gson es una biblioteca ligera de Google que permite convertir fácilmente JSON a objetos Java y viceversa. Es simple de usar y no requiere anotaciones adicionales para escenarios básicos.
2.1. Instalación de Gson
Agregue la dependencia a su pom.xml (Maven):
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version></dependency>Si usa Gradle:
implementation 'com.google.code.gson:gson:2.10.1'2.2. Análisis de JSON a objeto Java (deserialización)
Supongamos que tenemos una cadena JSON con información de un usuario:
{ "name": "Iván Petrov", "age": 30, "email": "ivan@example.com"}Creemos la clase User:
public class User { private String name; private int age; private String email;
// Getters y Setters (obligatorios para Gson) public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }}Ahora analicemos el JSON:
import com.google.gson.Gson;
public class Main { public static void main(String[] args) { String jsonString = "{\\"name\\":\\"Iván Petrov\\",\\"age\\":30,\\"email\\":\\"ivan@example.com\\"}"; Gson gson = new Gson(); User user = gson.fromJson(jsonString, User.class); System.out.println("Nombre: " + user.getName()); System.out.println("Edad: " + user.getAge()); }}Salida:
Nombre: Iván PetrovEdad: 302.3. Serialización de objeto Java a JSON
El proceso inverso: convertir un objeto a JSON:
User user = new User();user.setName("María Smirnova");user.setAge(25);user.setEmail("maria@example.com");
Gson gson = new Gson();String json = gson.toJson(user);System.out.println(json);Resultado:
{"name":"María Sm