Lectura y escritura de JSON en Java (biblioteca Jackson / Gson)

En Java, a diferencia de Python o JavaScript, JSON no tiene soporte nativo directo. Por eso se utilizan bibliotecas externas muy populares como Jackson y Gson (de Google). Ambas permiten serializar (convertir objetos Java a JSON) y deserializar (convertir JSON a objetos Java).

Opción 1: Usando Jackson

Jackson es una de las bibliotecas más usadas en Java para trabajar con JSON.

1) Dependencia (Maven)

Agrega en tu Maven pom.xml:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>

2) Crear una clase Java (POJO)

public class Usuario {
    private String nombre;
    private int edad;
    private boolean activo;

    // Constructor vacío requerido por Jackson
    public Usuario() {}

    // Constructor completo
    public Usuario(String nombre, int edad, boolean activo) {
        this.nombre = nombre;
        this.edad = edad;
        this.activo = activo;
    }

    // Getters y Setters
    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 boolean isActivo() { return activo; }
    public void setActivo(boolean activo) { this.activo = activo; }
}

3) Serializar objeto → JSON

import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) throws Exception {
        Usuario usuario = new Usuario("Ana", 28, true);

        ObjectMapper mapper = new ObjectMapper();
        String jsonString = mapper.writeValueAsString(usuario);

        System.out.println(jsonString);
        // {"nombre":"Ana","edad":28,"activo":true}
    }
}

4) Deserializar JSON → objeto

import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) throws Exception {
        String jsonString = "{\"nombre\":\"Luis\",\"edad\":35,\"activo\":false}";

        ObjectMapper mapper = new ObjectMapper();
        Usuario usuario = mapper.readValue(jsonString, Usuario.class);

        System.out.println(usuario.getNombre()); // Luis
        System.out.println(usuario.getEdad());   // 35
        System.out.println(usuario.isActivo());  // false
    }
}

5) Leer y escribir JSON en archivo

import java.io.File;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) throws Exception {
        Usuario usuario = new Usuario("Carlos", 40, true);
        ObjectMapper mapper = new ObjectMapper();

        // Escribir en archivo
        mapper.writeValue(new File("usuario.json"), usuario);

        // Leer desde archivo
        Usuario cargado = mapper.readValue(new File("usuario.json"), Usuario.class);
        System.out.println("Usuario leído: " + cargado.getNombre());
    }
}

Opción 2: Usando Gson (Google)

Gson es otra biblioteca muy usada, ligera y sencilla.

1) Dependencia (Maven)

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.11.0</version>
</dependency>

2) Serializar objeto → JSON

import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        Usuario usuario = new Usuario("María", 30, true);

        Gson gson = new Gson();
        String jsonString = gson.toJson(usuario);

        System.out.println(jsonString);
        // {"nombre":"María","edad":30,"activo":true}
    }
}

3) Deserializar JSON → objeto

import com.google.gson.Gson;

public class Main {
    public static void main(String[] args) {
        String jsonString = "{\"nombre\":\"Pedro\",\"edad\":25,\"activo\":false}";

        Gson gson = new Gson();
        Usuario usuario = gson.fromJson(jsonString, Usuario.class);

        System.out.println(usuario.getNombre()); // Pedro
        System.out.println(usuario.getEdad());   // 25
    }
}

Comparación Jackson vs Gson

Característica Jackson Gson
Popularidad Muy alta (Spring Boot lo usa) Alta (creada por Google)
Facilidad Más completa pero más pesada Ligera y sencilla
Performance Muy rápida en grandes datasets Adecuada, pero más lenta en casos masivos
Extras Buen ecosistema; soporte de herramientas como JSON Schema, integración con YAML vía módulos Menos funcionalidades extra

Resumen

  • En Java, JSON se maneja con bibliotecas externas.
  • Jackson — robusta, estándar en proyectos grandes.
  • Gson — ligera, fácil de usar.
  • Ambas permiten serializar (Java → JSON) y deserializar (JSON → Java) de forma simple.