Modos de salida POJO, Record y Jackson
Los Plain Old Java Objects (POJOs) son el formato de salida más compatible: campos privados con getters y setters públicos, un constructor sin argumentos y un constructor con todos los argumentos. Este patrón es comprendido por todas las bibliotecas de serialización Java — Jackson, Gson, Moshi — y todos los frameworks Java.
Los records de Java 16+ producen código más conciso para portadores de datos inmutables. Una declaración de record genera automáticamente el constructor, getters (nombrados según el componente, sin el prefijo "get"), equals(), hashCode() y toString(). Los records son ideales para casos de uso DTO y objeto-valor donde se desea inmutabilidad.
El modo de anotación Jackson añade @JsonProperty("originalKey") a cada campo para que los nombres de campos Java en camelCase puedan mapearse a claves JSON en cualquier estilo de casing. @JsonIgnoreProperties(ignoreUnknown = true) se coloca en cada clase para evitar fallos de deserialización cuando la API añade nuevos campos. La salida está lista para usar con @RequestBody y RestTemplate de Spring Boot.
Mapeo de tipos y convenciones de nomenclatura
Las cadenas JSON se mapean a String, los enteros a int (o Integer para nullable), los decimales a double (o Double), los booleanos a boolean (o Boolean), los campos solo-null a Object con comentario. Los arrays se convierten en List<T> donde T es la clase de elemento inferida. Los objetos anidados generan clases separadas nombradas en PascalCase según su clave.
Las claves JSON se convierten automáticamente a identificadores Java válidos: los guiones y espacios se eliminan, el siguiente carácter se capitaliza (camelCase). Las claves que empiezan con dígitos obtienen un prefijo de guión bajo. Las palabras reservadas Java se escapan con un sufijo de guión bajo.
La declaración de paquete al principio de cada archivo es "com.example.model" por defecto pero se puede personalizar. Las importaciones para java.util.List y las anotaciones Jackson se añaden automáticamente según sea necesario.
Spring Boot e integración empresarial
Las aplicaciones Spring Boot que consumen APIs REST necesitan clases de solicitud y respuesta tipadas. Pega el contrato JSON de la documentación de la API, genera POJOs anotados con Jackson e incorpóralos en tu capa de servicio.
Las anotaciones Lombok (@Data, @NoArgsConstructor, @AllArgsConstructor, @Builder) se pueden añadir a la salida POJO para eliminar el código boilerplate de getters/setters. Con Lombok el POJO generado se reduce a solo las declaraciones de campos y las anotaciones a nivel de clase.
Al integrar con JPA o Hibernate, los POJOs generados sirven como punto de partida para las clases de entidad. Añadir @Entity, @Id y @Column encima de la salida generada da una primera versión de entidad JPA desde tu modelo de datos JSON.