← Inicio de herramientas100% del lado del cliente

Generador de Java Records, Lombok y POJOs Jackson a partir de JSON

Genera Records idiomáticos de Java, clases Lombok con @Data o POJOs estándar de Java con anotaciones Jackson @JsonProperty e inferencia de tipos a partir de JSON.

649 chars
Clases Java generadas
package com.example.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import java.time.Instant;
import java.time.LocalDate;
import java.util.List;
import java.util.UUID;

public record Owner(
    @JsonProperty("user_id")
    Integer userId,

    @JsonProperty("full_name")
    String fullName,

    @JsonProperty("email_address")
    String emailAddress,

    @JsonProperty("verified")
    Boolean verified
) {}

public record Metric(
    @JsonProperty("metric_key")
    String metricKey,

    @JsonProperty("metric_value")
    Double metricValue,

    @JsonProperty("alert_threshold")
    Integer alertThreshold
) {}

public record ApiResponse(
    @JsonProperty("id")
    UUID id,

    @JsonProperty("name")
    String name,

    @JsonProperty("is_active")
    Boolean isActive,

    @JsonProperty("max_concurrency")
    Integer maxConcurrency,

    @JsonProperty("service_fee")
    Double serviceFee,

    @JsonProperty("created_at")
    Instant createdAt,

    @JsonProperty("deployment_date")
    LocalDate deploymentDate,

    @JsonProperty("tags")
    List<String> tags,

    @JsonProperty("owner")
    Owner owner,

    @JsonProperty("metrics")
    List<Metric> metrics
) {}

Estilo de clase de destino

3

Número de clases generadas

17

Número de campos inferidos

1.2 KB

Referencia técnica y guía de arquitectura

Generador de Java Records, Lombok y POJOs Jackson a partir de JSON — Guía de referencia

Genera Records idiomáticos de Java, clases Lombok con @Data o POJOs estándar de Java con anotaciones Jackson @JsonProperty e inferencia de tipos a partir de JSON.

Parámetros clave y controles

targetStructureenum ('RECORD' | 'LOMBOK' | 'STANDARD_POJO')

Especifica el estilo de clase de destino: Records inmutables de Java 16+, clases mutables/inmutables anotadas con Lombok (@Data, @Builder, @Value) o JavaBeans clásicos con getters/setters explícitos.

propertyNamingStrategyenum ('CAMEL_CASE' | 'SNAKE_CASE' | 'KEBAB_CASE' | 'EXACT')

Determina cómo se mapean las claves JSON a los campos de Java y si se generan anotaciones de Jackson (@JsonProperty, @JsonNaming) para conciliar las discrepancias de nomenclatura.

inferNumbersAsenum ('PRIMITIVE_OR_BOXED' | 'BIG_DECIMAL' | 'STRICT_LONG')

Controla las heurísticas de inferencia numérica, asignando números de punto flotante a Double o BigDecimal y enteros a Integer, Long o BigInteger.

includeJacksonAnnotationsboolean

Cuando es true, anota los campos y clases generados con anotaciones de Jackson tales como @JsonProperty, @JsonInclude(Include.NON_NULL) y @JsonIgnoreProperties(ignoreUnknown = true).

dateTimeLibraryenum ('JAVA_TIME' | 'LEGACY_UTIL_DATE' | 'STRING_ONLY')

Controla la inferencia de cadenas de fecha y hora ISO-8601, mapeando automáticamente marcas de tiempo a java.time.Instant, java.time.OffsetDateTime o java.time.LocalDate.

Consejos profesionales y mejores prácticas

Errores comunes y solución de problemas

Jackson falla al deserializar un Java Record generado con el error 'Cannot construct instance of (no Creators, like default constructor, exist)'.

Asegúrate de que jackson-databind esté en la versión 2.12 o superior. Si ejecutas en Java 16+, verifica que jackson-module-parameter-names esté registrado en tu ObjectMapper o utiliza Jackson 2.13+, el cual gestiona automáticamente los constructores canónicos de los records.

Lombok @Builder falla o ignora los valores por defecto definidos en los campos del POJO generado.

Agrega @Builder.Default a los campos que tengan inicializadores, o declara un @NoArgsConstructor explícito junto con @AllArgsConstructor para que Jackson pueda instanciar el objeto mediante reflexión o patrones builder sin restablecer los valores por defecto.

Los arrays JSON heterogéneos anidados (tipos mixtos) generan definiciones genéricas no válidas como List<Object>.

Define una interfaz común polimórfica o una clase base abstracta anotada con @JsonTypeInfo y @JsonSubTypes de Jackson, o preprocesa el payload JSON para forzar estructuras de objetos consistentes antes de la generación del POJO.

Preguntas frecuentes (FAQ)

▼

▼

▼

▼

Herramientas y utilidades relacionadas

Todas las herramientas →