JSON a clases Java (POJO o record)

Crea POJO de Java con getters y setters o records de Java 16 a partir de JSON, con @JsonProperty de Jackson para claves inusuales y clases anidadas estáticas. Gratis.

Los tipos anidados son clases anidadas estáticas. Las claves que no son nombres Java válidos reciben @JsonProperty (Jackson).

Se ejecuta completamente en tu navegador. Tus datos nunca se suben.

Herramientas Relacionadas

Ver Todas

¿Qué es JSON a clase Java?

Genera clases de modelo Java a partir de un ejemplo JSON, ya sea como POJO clásicos con campos privados, getters y setters o como records compactos de Java. Los objetos anidados se convierten en clases anidadas estáticas (o records anidados) dentro del tipo raíz.

Cómo usar JSON a clase Java

  1. Pega un ejemplo JSON en Entrada JSON (o haz clic en Cargar ejemplo / Abrir archivo).
  2. Fija el Nombre del tipo raíz (por defecto Root).
  3. Elige el Estilo de salida: Clase con getters/setters (Jackson) o Record (Java 16 o posterior).
  4. Copia el código Java generado o haz clic en Descargar para guardarlo como archivo.

Ejemplo

Entrada
{"id":1,"name":"A","tags":["x"]}
Salida
import java.util.List;

public class Root {
    private long id;
    private String name;
    private List<String> tags;

    public long getId() { return id; }
    public void setId(long id) { this.id = id; }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public List<String> getTags() { return tags; }
    public void setTags(List<String> tags) { this.tags = tags; }
}

Cuándo usar JSON a clase Java

Úsalo para generar el esqueleto de DTO para código Spring, Jackson o Gson. Ajusta a mano tipos como fechas (LocalDate, Instant) y enums, y separa las clases anidadas en archivos si tu código base lo prefiere.

Cómo funciona JSON a clase Java

El ejemplo se recorre de forma recursiva y cada posición acumula los tipos que ha visto. Los arrays de objetos se fusionan en un solo tipo: una clave que falta en algunos elementos pasa a ser opcional, una clave que es null en algún sitio pasa a ser anulable, los enteros mezclados con decimales se convierten en un tipo de coma flotante y cualquier otra mezcla de tipos recurre a un tipo dinámico. Los objetos anidados se convierten en tipos con nombre propio (PascalCase de la clave, claves de array en singular: orders → Order), con sufijos numéricos si los nombres coinciden. La salida Java usa los primitivos long/double/boolean para valores obligatorios y los tipos envoltorio Long/Double/Boolean para los anulables u opcionales, String, List<T> para arrays y Object para valores dinámicos. Los nombres de campo están en camelCase; cuando difieren de la clave JSON se añade una anotación @JsonProperty("key") de Jackson y el import se incluye automáticamente.

Casos de Uso Comunes

  • Crear DTO para un cliente REST de Spring Boot
  • Modelar un mensaje JSON para consumidores de Kafka
  • Generar records para configuración inmutable
  • Preparar fixtures de prueba en Java

Preguntas Frecuentes

¿Necesito Jackson?

Solo si algunas claves no son nombres Java válidos; en ese caso se usa @JsonProperty. Si no, las clases son Java puro y también funcionan con Gson.

¿Por qué long en lugar de int?

Los números JSON pueden superar el rango de int (identificadores, marcas de tiempo). long evita desbordamientos; cámbialo a int si sabes que los valores son pequeños.

¿Los records funcionan con Jackson?

Sí, Jackson 2.12+ deserializa records de Java mediante su constructor canónico.

Explora más categorías