Generador de clases Java desde JSON

Pega una respuesta de API en JSON y obtén sus tipos de Java en un solo archivo. Elige clases clásicas con campos privados, getters y setters, o records compactos (Java 16+). Las claves que no sirven como nombres camelCase llevan @JsonProperty de Jackson, así la correspondencia sigue siendo exacta.

Generar

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo se usa

  1. Pega un ejemplo de JSON. Los arrays con varios objetos dan el mejor resultado: así se detectan las claves que faltan en algunos.
  2. Elige clases (campos, getters y setters) o records, y si quieres anotaciones de Jackson.
  3. Guarda el resultado como Root.java y renombra las clases según tu proyecto.

Cómo funciona

El ejemplo se convierte en una «forma»: cada clave con todos los tipos que aparecen en ese lugar. Todos los objetos de un array se fusionan en una clase.

  • Los campos van en camelCase: order_id → orderId, gift_note → giftNote. Los getters siguen JavaBeans: getOrderId(), e isPaid() para un boolean primitivo.
  • Los nombres de clase salen de las claves: items contiene List, customer pasa a Customer.
  • Solo se importa lo que se usa: java.util.List y com.fasterxml.jackson.annotation.JsonProperty.
  • Si el nivel superior es un array, un comentario indica el tipo para leerlo, por ejemplo List.

Ejemplo

{"items":[{"sku":"A","note":null,"qty":1},{"sku":"B","note":"x"}]} como records da:

import java.util.List;

public record Root(
    List<Item> items
) {
    public record Item(
        String sku,
        String note,
        Long qty
    ) {}
}

qty falta en el segundo elemento, así que es un Long envoltorio que puede ser null.

Consejos

  • Léelo con Jackson: new ObjectMapper().readValue(json, Root.class).
  • Añade @JsonIgnoreProperties(ignoreUnknown = true) si los datos reales pueden traer claves que no estaban en el ejemplo.
  • Revisa los tipos numéricos: un precio que en el ejemplo siempre fue entero sale como long.

Preguntas frecuentes

¿Cómo se traducen los tipos de JSON a Java?

Las cadenas pasan a String, true y false a boolean, los enteros a long y los demás números a double (una mezcla da double). Los arrays pasan a List<T>, los objetos a clases propias, y un lugar con valores de distinto tipo pasa a Object.

¿Cuándo usa Long en vez de long?

Un primitivo no puede guardar null. Si el ejemplo tiene null en un número o booleano, o la clave falta en algunos objetos de un array, se usa el tipo envoltorio: Long, Double, Boolean. Dentro de List<...> siempre se usa el envoltorio, como exigen los genéricos de Java.

¿Por qué las demás clases están dentro de Root?

Java permite una sola clase pública de nivel superior por archivo. Al anidar las demás como public static (o records anidados), el resultado es un único archivo Root.java que compila tal cual. Úsalas como Root.Item o muévelas a sus propios archivos.

¿Qué pasa con claves como first-name o class?

Los campos van en camelCase a partir de la clave: first-name pasa a firstName, y una palabra reservada de Java recibe un guion bajo: class_. Con Jackson, esos campos llevan @JsonProperty("first-name"); sin él, un comentario conserva la clave original.

¿Los records funcionan con Jackson?

Sí, Jackson 2.12 y posteriores deserializan records mediante su constructor canónico, y @JsonProperty en un componente de record funciona igual que en un campo.

Más en Desarrollo

Todas las herramientas de la categoría: Desarrollo ·Actualizado el 4 de noviembre de 2026

Opciones de privacidad

Google Analytics nos muestra qué herramientas se usan y si funcionan. Puede usar cookies. Tu elección se guarda en este navegador.