JSON a clases de Java

Pega un JSON y obtén records de Java o clases clásicas con getters y setters. Las anotaciones @JsonProperty de Jackson conservan las claves que no coinciden con los nombres de Java.

Gratis y privado. Todo funciona en tu navegador y no se sube nada.

Cómo funciona

  1. Pega tu JSONPega una respuesta de tu API o abre un archivo .json. Con Ejemplo ves un caso de muestra.
  2. Ajusta las opcionesIndica el nombre del tipo principal y las opciones de este lenguaje. El código se actualiza mientras escribes.
  3. Copia o descargaCopia el código en tu proyecto o descárgalo como archivo.

Records o POJO clásicos

Los records, disponibles desde Java 16, son la forma más corta de modelar un objeto JSON y Jackson los lee sin configuración extra. Si tu proyecto usa una versión anterior de Java o un framework que necesita setters, elige clases: obtendrás campos privados con getters y setters para cada propiedad.

Los nombres de campo van en camelCase. Los números y booleanos obligatorios usan tipos primitivos como int y boolean, y los opcionales o anulables usan Integer, Long o Boolean para poder guardar null. Las fechas ISO pasan a LocalDate, LocalDateTime u OffsetDateTime; Jackson necesita el módulo jackson-datatype-jsr310 para leerlas. Todos los tipos van en un solo archivo: el tipo principal es public y los demás son de paquete, así que el nombre del archivo debe coincidir con el tipo principal.

Preguntas frecuentes

¿Funciona con Gson?

Sí, las clases también funcionan con Gson. Desactiva las anotaciones de Jackson y usa @SerializedName donde el nombre en Java sea distinto de la clave.

¿Se sube mi JSON a algún sitio?

No. Los tipos se generan en tu navegador. Las respuestas de API con datos de clientes o claves nunca salen de tu dispositivo.

¿Cómo se detectan los campos opcionales?

Si el JSON contiene una lista de objetos, se comparan todos. Un campo que falta en al menos un objeto se marca como opcional. Con un solo objeto, todos los campos se tratan como obligatorios.

¿Qué pasa con los campos que siempre son null?

Con el ejemplo no se puede saber su tipo, así que el campo recibe un tipo general como unknown, object, Any o JsonElement. Añade un ejemplo en el que el campo tenga un valor para obtener un tipo preciso.

¿Por qué mi 1.0 aparece como número decimal?

La herramienta mira cómo está escrito el número. 1.0 o 2.5 pasan a ser double o float, 1 pasa a ser un entero. Si un campo es entero en unos elementos y decimal en otros, se usa el tipo decimal.

¿Puedo usar el resultado en código de producción?

Sí, el código compila tal cual en las configuraciones habituales. Revisa nombres y tipos antes de hacer commit, porque un ejemplo nunca puede mostrar todos los valores posibles.

¿Funciona sin conexión?

Sí. Después de abrir la página una vez, sigue funcionando sin conexión a internet.