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).
Jackson es una de las bibliotecas más usadas en Java para trabajar con JSON.
Agrega en tu Maven pom.xml
:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
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; }
}
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}
}
}
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
}
}
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());
}
}
Gson es otra biblioteca muy usada, ligera y sencilla.
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.11.0</version>
</dependency>
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}
}
}
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
}
}
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 |