JSON a Java
Genera records de Java a partir de una muestra JSON, listos para enlazar con Jackson.
Entrada JSON
Código generado
Escribe JSON a la izquierda para generar un tipo a partir de él.
¿Qué es JSON a Java?
Un conversor de JSON a Java convierte una muestra de un payload JSON en declaraciones de records de Java que reflejan su estructura. Los records, añadidos en Java 16, son el reemplazo moderno del POJO escrito a mano: una sola línea declara los componentes y el compilador genera el constructor, los accesores, equals, hashCode y toString, eliminando los cien renglones de boilerplate que antes requería una clase de datos. Como Jackson y otras librerías de enlace JSON pueden construir records directamente, este es hoy el camino más corto de una respuesta de API a código Java tipado. Generarlos desde un payload real evita además el clásico bug de integración donde un nombre de campo tecleado a mano difiere de la clave JSON por un solo carácter y se deserializa silenciosamente como null.
Cómo usar JSON a Java
- Pega una respuesta JSON representativa en el panel izquierdo — los componentes del record coinciden exactamente con las claves de esa muestra.
- Fija un nombre de record raíz sobre la salida (por defecto "Root"); cada objeto anidado recibe su propio record, con el nombre de la clave que lo contiene.
- Copia los records a tu proyecto — cada record de nivel superior necesita su propio archivo si lo declaras public, o pueden anidarse dentro de una clase.
- Usa el selector de lenguaje sobre la salida para emitir la misma forma como una data class de Kotlin o un record de C#.
Ejemplos
Objeto plano como record
Entrada
{"id": 1, "name": "Ada", "active": true}
Salida
record Root( int id, String name, boolean active ) {}
Objeto anidado y una lista
Entrada
{"user": {"id": 1, "name": "Ada", "roles": ["admin"]}}
Salida
import java.util.List; record User( int id, String name, List<String> roles ) {} record Root( User user ) {}
Errores comunes
- Dejar un campo anulable como primitivo int o boolean — un null en el payload entonces falla el enlace o se convierte silenciosamente en 0 o false, mucho más difícil de detectar.
- Declarar public todos los records generados en un solo archivo, lo que no compila porque Java solo permite un tipo de nivel superior public por archivo.
- Esperar que un record sea mutable — los componentes son final por diseño, así que el código que intentaba asignar campos tras la construcción necesita una reestructuración y no un pequeño retoque.
Por qué usar esta herramienta
- Produce records y no POJOs heredados, reemplazando constructor, getters, equals, hashCode y toString con una única declaración.
- Añade automáticamente el import de java.util.List cuando el payload contiene arrays, así la salida compila sin buscar imports ausentes.
- Se ejecuta íntegramente en el cliente, así que un payload copiado de un servicio Spring Boot o Micronaut se queda en tu máquina en lugar de llegar a un servidor.