Generador de clases Java a partir de JSON

Genera definiciones de clases POJO de Java a partir de objetos JSON. Produce clases anotadas para Jackson con campos marcados con @JsonProperty, métodos getter y setter, y los tipos de Java adecuados inferidos a partir de los valores JSON.

Nombre de la estructura:
Paquete:
Valóranos
0.00de5(0 valoraciones)
Funciones y ventajas

Genera POJOs de Java con anotaciones @JsonProperty para Jackson.

Asocia tipos JSON con primitivos y objetos de Java: String, Integer, Double, Boolean, List<T>.

Crea definiciones de clases internas anidadas para objetos JSON anidados.

Genera métodos getter y setter siguiendo la convención de nomenclatura de JavaBeans.

Listo para usar con Jackson ObjectMapper para la deserialización de JSON.

Cómo usarlo

Paso 01

Pega un objeto JSON en el campo de entrada.

Paso 02

El generador produce una clase Java con campos anotados.

Paso 03

Copia la clase en tu proyecto Java.

Paso 04

Utiliza Jackson ObjectMapper para deserializar JSON en tu clase.

Casos de uso

Desarrollo de API en Java

  • Deserializar respuestas REST con Spring RestTemplate
  • Tipar DTOs de Jackson para controladores de Spring Boot
  • Analizar una configuración JSON con Jackson

Java empresarial

  • Mapear cargas útiles JSON en consumidores de Kafka
  • Definir objetos de transferencia de datos para microservicios
  • Analizar cargas útiles de webhooks en servicios Java
Compatibilidad de plataformas

Ecosistema Java

  • Spring Boot
  • Jackson
  • Quarkus
  • Micronaut
  • Jakarta EE
Consejos profesionales

Añade `@JsonIgnoreProperties(ignoreUnknown = true)` a nivel de clase para gestionar correctamente las respuestas JSON que contengan campos adicionales no definidos en tu POJO.

Utiliza Integer, Double y Boolean (tipos envolventes) en lugar de int, double y boolean para manejar correctamente los valores JSON nulos.

Para los campos que pueden ser nulos en JSON, asegúrate de utilizar tipos envolventes (boxed types); los tipos primitivos, como `int`, no pueden representar un valor nulo en Java.

Mejores prácticas

Añade @JsonIgnoreProperties(ignoreUnknown = true) a todos los POJO de respuesta de la API para evitar fallos cuando las API añadan nuevos campos.

Utiliza tipos envolventes (Integer, Double, Boolean) en lugar de tipos primitivos para todos los campos que potencialmente puedan ser nulos en el JSON.

Considera añadir Lombok @Data para eliminar el código repetitivo de los métodos getter, setter, equals, hashCode y toString.

Preguntas frecuentes

Preguntas frecuentes

Encuentra respuestas a las preguntas más comunes sobre nuestras herramientas y servicios.

Guía detallada

Entender JSON a clase Java

Java sigue siendo uno de los lenguajes más utilizados para el desarrollo de *backends* empresariales, y Jackson es la biblioteca de serialización JSON dominante en el ecosistema Java. Spring Boot configura automáticamente un `ObjectMapper` de Jackson para todos los controladores REST, lo que convierte a los POJO (*Plain Old Java Objects*) anotados con Jackson en el estándar para definir los tipos de cuerpo de las solicitudes y respuestas en las aplicaciones Spring. Quarkus y Micronaut, los marcos de trabajo Java nativos de la nube más recientes, también admiten Jackson como biblioteca de enlace JSON de primer nivel. Escribir manualmente clases Java anotadas con Jackson para cada *payload* de API o estructura de configuración JSON es una tarea repetitiva que implica crear campos, anotaciones, *getters*, *setters* y constructores; elementos que, en realidad, pueden generarse automáticamente a partir de un ejemplo JSON.

La anotación `@JsonProperty` de Jackson asigna un campo de Java a un nombre de clave JSON específico, lo que permite que las convenciones de nomenclatura `camelCase` de Java convivan con APIs JSON que utilizan `camelCase`, `snake_case` u otras convenciones. Cuando un objeto JSON contiene una clave como `user_id`, el campo Java correspondiente puede denominarse `userId` utilizando `@JsonProperty("user_id")`; esto permite mantener una nomenclatura idiomática en Java y, al mismo tiempo, realizar correctamente la deserialización desde la clave JSON. La anotación a nivel de clase `@JsonIgnoreProperties(ignoreUnknown = true)` es una importante medida defensiva que evita errores de deserialización cuando la API incorpora nuevos campos aún no definidos en la clase Java, algo esencial para preservar la compatibilidad con versiones anteriores en clientes de API de larga duración.

El sistema de tipos de Java exige una distinción clara entre los tipos primitivos (int, double, boolean) y sus equivalentes como objetos envolventes (Integer, Double, Boolean). Esta distinción es crucial para la deserialización de JSON, ya que el valor `null` de JSON se asigna a una referencia `null` de Java, y `null` no puede asignarse a un tipo primitivo. Cuando un campo JSON puede tener un valor `null`, el campo Java correspondiente debe utilizar un tipo envolvente para evitar una excepción `NullPointerException` durante la deserialización. El generador emplea tipos envolventes para todos los campos que presentan valores no nulos en el JSON de muestra, previendo que puedan aparecer valores `null` en los datos de producción. Los tipos primitivos deben reservarse únicamente para campos que garanticen contractualmente la ausencia de valores nulos.

Este generador de clases Java a partir de JSON produce clases POJO estándar anotadas para Jackson (con `@JsonProperty`), campos privados que utilizan los tipos envolventes (*boxed types*) de Java adecuados y métodos *getter* y *setter* al estilo JavaBeans. Los objetos JSON anidados se convierten en definiciones de clases estáticas internas dentro de la clase raíz, manteniendo todos los tipos relacionados en una única unidad de compilación y preservando la encapsulación. Se utiliza `List<T>` para las matrices JSON, con el tipo de elemento correspondiente. El código generado puede pegarse directamente en un proyecto Java y compilarse de inmediato, siempre que se disponga de la dependencia Jackson Databind. En proyectos que deseen reducir aún más el código repetitivo (*boilerplate*), los métodos *getter* y *setter* pueden sustituirse por anotaciones de Lombok —`@Data`, `@Getter` o `@Setter`— sin alterar el comportamiento de serialización subyacente.

Herramientas para cada necesidad