Introducción al trabajo con JSON en Java
JSON (JavaScript Object Notation) es un formato ligero de intercambio de datos, ampliamente utilizado en aplicaciones web modernas, APIs y microservicios. A pesar de su nombre, JSON no está vinculado a JavaScript y es perfectamente compatible con Java. En este artículo, analizaremos en detalle cómo realizar el parsing, serialización y deserialización de JSON en Java utilizando las bibliotecas populares: Jackson y Gson.
Saber trabajar con JSON es una habilidad obligatoria para cualquier desarrollador Java. Ya sea para leer archivos de configuración, interactuar con APIs REST o transferir datos entre microservicios, JSON está presente en todas partes. Revisaremos ambos enfoques para que puedas elegir el más adecuado para tu proyecto.
Bibliotecas principales para trabajar con JSON en Java
En el ecosistema Java existen varias bibliotecas populares para trabajar con JSON. Dos de ellas son el estándar de facto:
- Jackson — la biblioteca más popular, incluida en Spring Boot. Se caracteriza por su alto rendimiento y amplias capacidades de configuración.
- Gson — biblioteca de Google, simple de usar y ligera. Ideal para proyectos pequeños.
Ambas bibliotecas soportan el ciclo completo de trabajo con JSON: serialización (objeto → JSON), deserialización (JSON → objeto) y procesamiento por flujos.
Agregar dependencias
Para trabajar con las bibliotecas, es necesario agregarlas al proyecto. Si usas Maven, agrega las siguientes dependencias en pom.xml:
<!-- Jackson --><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version></dependency>
<!-- Gson --><dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version></dependency>Para Gradle, agrega las líneas en build.gradle:
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'implementation 'com.google.code.gson:gson:2.10.1'Serialización de objetos Java a JSON
La serialización es el proceso de convertir un objeto Java en una cadena JSON. Revisemos ambos enfoques.
Serialización con Jackson
Jackson utiliza la clase ObjectMapper para la serialización. Ejemplo:
import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.core.JsonProcessingException;
public class JacksonSerialization { public static void main(String[] args) throws JsonProcessingException { // Creamos el objeto para serializar User user = new User("Iván", "ivan@example.com", 25); // Creamos ObjectMapper ObjectMapper mapper = new ObjectMapper(); // Serializamos a JSON String json = mapper.writeValueAsString(user); System.out.println(json); // Salida: {"name":"Iván","email":"ivan@example.com","age":25} }}
class User { private String name; private String email; private int age; // Constructor, getters y setters public User(String name, String email, int age) { this.name = name; this.email = email; this.age = age; } public String getName() { return name; } public String getEmail() { return email; } public int getAge() { return age; }}Serialización con Gson
Gson utiliza la clase Gson con el método toJson():
import com.google.gson.Gson;
public class GsonSerialization { public static void main(String[] args) { User user = new User("María", "maria@example.com", 30); Gson gson = n