Ayuda

JSON a POJO: clases o records Java desde un JSON

Pega tu JSON y obtén código Java listo para usar: una clase por cada objeto, con campos privados, un constructor sin argumentos, getters y setters, o records de Java si lo prefieres. Los objetos anidados se escriben dentro de su clase padre, así que todo el resultado cabe en un único archivo .java. Añade anotaciones de Jackson o Gson cuando necesites conservar las claves originales del JSON. La conversión ocurre en tu navegador y el JSON no se sube a ningún sitio.


JSON to POJO online Java: cómo convertir paso a paso

  1. Pega el JSON en el cuadro JSON (muestra «Pega el JSON aquí...»). Un texto pegado se convierte al instante. Si escribes, el código se actualiza unos 300 milisegundos después de que pares.
  2. Lee las clases bajo Código Java. Una línea debajo, como «Se generaron 2 clases.», indica cuántas se han escrito.
  3. Pulsa Copiar, justo debajo del código. El botón muestra «Copiado» un momento. Guarda el código en un archivo con el nombre de la clase raíz, por ejemplo Root.java.
  4. Para cambiar el resultado, abre Ajustes: indica el Nombre de la clase raíz (por defecto Root), elige en Anotaciones entre Ninguna, Jackson o Gson, o marca Usar records en lugar de clases. El código se actualiza en cuanto cambias un ajuste.
  5. Pulsa Borrar para vaciar el cuadro y empezar de nuevo.

De JSON a clase Java: un ejemplo

Esto es lo que pegas: { "user_id": 7, "name": "Ana", "price": 4.5, "tags": ["a", "b"], "address": { "city": "Kyoto" } }

Con Anotaciones en «Ninguna», el resultado empieza con import java.util.List; y public class Root. Los campos son Integer userId, String name, Double price, List<String> tags y Address address. Después vienen el constructor sin argumentos y los getters y setters, como getUserId y setUserId.

El objeto anidado address se convirtió en Address, una public static class dentro de Root, y por eso basta con un archivo. La clave user_id pasó a ser el campo userId. La línea de estado te avisa: «Se cambió 1 nombre de campo para adaptarlo a Java.»

JSON a record Java con anotaciones Jackson

Pon el Nombre de la clase raíz en Order, elige Jackson en Anotaciones y marca Usar records en lugar de clases. El mismo JSON se convierte en public record Order(...).

Cada componente del record lleva @JsonProperty("key") con la clave original del JSON, así que user_id sigue asignándose a userId. Si eliges Gson, los mismos componentes llevan @SerializedName("key"), con su importación de Gson. Los records requieren Java 16 o posterior.

Cómo se convierten los tipos de JSON a tipos de Java

Todos los tipos son tipos envoltorio, así que cualquier campo puede faltar o ser nulo.

Los números se leen exactamente como están escritos, así que un ID largo nunca se redondea. Las importaciones solo aparecen cuando el código las usa. Si una clave aparece dos veces en el mismo objeto, gana la última.

Cómo se eligen los nombres de clases y campos

El nombre de la clase raíz se limpia hasta ser un nombre válido de Java, y si el cuadro está vacío se usa Root. Cuando el propio JSON empieza por un array de objetos, Root describe un elemento y la página te indica que leas el JSON como List<Root>.

Cuando el JSON no se acepta

El lector es estricto, como lo es JSON: los comentarios, las comillas simples y las comas finales son errores. El mensaje «No se pudo leer este JSON» da un motivo claro y la posición, como «Línea 3, columna 5», por ejemplo «El analizador se detuvo en «}». Revisa si falta una coma, dos puntos, un corchete o unas comillas justo antes.»

Un JSON válido que no contiene ningún objeto, como 42 o un array de números, muestra «Este JSON no contiene ningún objeto del que generar una clase.» Se rechaza el texto de más de 2.000.000 de caracteres y también un anidamiento de más de 200 niveles.


Preguntas frecuentes

¿Cómo puedo convertir JSON a objeto Java con un POJO?

Pega el JSON en el cuadro «JSON» y copia el código de «Código Java». Obtienes una clase por cada objeto JSON, con campos privados, un constructor público sin argumentos y métodos públicos getX y setX. Guarda el código en un archivo con el nombre de la clase raíz, por ejemplo Root.java, y lee después el JSON con Jackson o Gson.

¿Cómo convierto un array JSON a objetos Java?

Pega el array de objetos tal cual. La herramienta describe un elemento del array como la clase raíz y te indica que leas el JSON como List. En Jackson eso es un TypeReference> y en Gson un TypeToken>. Un array dentro de un objeto pasa a ser un campo List, con la clase nombrada según la clave.

¿Cómo conservo las claves originales del JSON con Jackson o Gson?

Abre «Ajustes» y elige Jackson o Gson en «Anotaciones». Jackson añade @JsonProperty("key") y Gson añade @SerializedName("key") en cada campo, junto con la importación. Con «Ninguna», una clave como user_id pasa a ser el campo userId, que no se vuelve a asignar al JSON a menos que la clave original se conserve con una anotación o una estrategia de nombres.

¿Puedo pasar de JSON a record Java?

Sí. Marca «Usar records en lugar de clases» en «Ajustes». Cada objeto JSON se convierte en public record Name(Type a, Type b) {}, y los objetos anidados pasan a ser records dentro del record padre. Los records requieren Java 16 o posterior. Las anotaciones siguen funcionando y se colocan en cada componente del record.

¿Por qué un número JSON es Integer en un sitio y Double en otro?

El tipo depende de cómo está escrito el número. Un número entero es Integer, o Long si es demasiado grande para un Integer, o BigInteger si es demasiado grande para un Long. Un número escrito con punto decimal o exponente es Double, aunque sea 1.0.

¿Qué pasa si los objetos de un array tienen claves distintas?

Se combinan en una sola clase que contiene todas las claves vistas en cualquiera de ellos, de modo que las claves que solo tienen algunos objetos también reciben un campo. Si una clave contiene tipos distintos o un array está vacío, el campo es de tipo Object o List. Revisa esos campos a mano.

¿Genera clases de Kotlin o anotaciones de Lombok?

No. La salida es Java sin más: clases con getters y setters, o records. Si usas Lombok, borra los métodos getter y setter y pon @Data en la clase. Una data class de Kotlin tienes que escribirla aparte.

¿Este JSON to POJO online converter sube mi JSON, y qué tamaño admite?

Hasta 2.000.000 de caracteres, con un anidamiento de hasta 200 niveles. La conversión se hace en tu navegador, así que el JSON no se sube ni se guarda en ninguna parte.

Recomendado

Ayuda a mantener las herramientas gratis. ✨

Imágenes meramente ilustrativas. En calidad de Afiliado de Amazon, obtengo ingresos por las compras adscritas que cumplen los requisitos aplicables.