JSON a clase Java
Pega un objeto JSON o la respuesta de una API y obtén clases de modelo Java listas para usar: campos en camelCase, los tipos Integer, Long, Double, Boolean y List correctos, clases anidadas para los objetos anidados y, opcionalmente, Lombok, records y anotaciones de Jackson o Gson. La conversión se hace por completo en tu navegador.
Última actualización:
Tu JSON se analiza localmente en esta pestaña y nunca se sube. Consejo: Ctrl + Intro genera el código.
Cómo usar JSON a clase Java
- Pega tu JSON en el recuadro de la izquierda o abre un archivo .json. Se carga un ejemplo para que veas el resultado al instante.
- Ponle nombre a la clase raíz y define un paquete, o borra el paquete para omitirlo.
- Elige un estilo de código: getters y setters, Lombok, records o campos públicos, y elige Jackson, Gson o ninguna anotación.
- Elige cómo se escriben los objetos anidados: clases internas estáticas en un solo archivo o un archivo por clase.
- Copia o descarga el código y deserializa con new ObjectMapper().readValue(json, Root.class).
Ejemplo: de JSON a un POJO de Java
Para {"id": 7, "user_name": "ada", "price": 9.99, "tags": ["new"]} con getters/setters y Jackson, la herramienta genera:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Root {
@JsonProperty("id")
private Integer id;
@JsonProperty("user_name")
private String userName;
@JsonProperty("price")
private Double price;
@JsonProperty("tags")
private List<String> tags;
public Integer getId() {
return id;
}
// … more getters and setters
}Léelo con Jackson: Root root = new ObjectMapper().readValue(json, Root.class); o con Gson: Root root = new Gson().fromJson(json, Root.class);. Para un array en el nivel superior, usa new TypeReference<List<Root>>() {}.
Correspondencia de tipos de JSON a Java
| Valor JSON | Tipo Java | Con "Tipos primitivos" |
|---|---|---|
"text" | String | String |
42 | Integer | int |
3200000000 (más allá de ±2,147,483,647) | Long | long |
9.99, 1e3 | Double | double |
true / false | Boolean | boolean (getter isX()) |
[ … ] | List<T> | List<T> |
{ … } | Una clase nueva | Una clase nueva |
{} | Map<String, Object> | Map<String, Object> |
null, tipos mezclados | Object | Object |
Los campos que son null o que faltan en algunos elementos del array siempre mantienen el tipo envoltorio, porque un primitivo no puede contener null. Para valores monetarios, plantéate cambiar Double por BigDecimal después de generar el código.
Dependencias para las anotaciones
| Biblioteca | Coordenadas de Maven |
|---|---|
| Jackson | com.fasterxml.jackson.core:jackson-databind (incluida en Spring Boot) |
| Gson | com.google.code.gson:gson |
| Lombok | org.projectlombok:lombok (scope provided, procesamiento de anotaciones activado) |
Preguntas frecuentes
¿Cómo convierto JSON a una clase Java?
Pega el JSON en el recuadro de entrada. La herramienta lee cada clave y cada valor, crea una clase para cada forma de objeto distinta, asigna los valores a tipos de Java y escribe los campos, los getters y los setters (o las anotaciones de Lombok o un record). Después copia el código en tu proyecto o descarga el archivo .java.
¿Qué tipos de Java se usan?
Las cadenas se convierten en String, los números enteros en Integer (o en Long cuando un valor no cabe en 32 bits), los números con punto decimal o exponente en Double, true/false en Boolean, los arrays en List<T>, los objetos anidados en su propia clase y los objetos vacíos en Map<String, Object>. Los valores que siempre son null, los arrays vacíos y los tipos mezclados se convierten en Object. Marca Tipos primitivos para usar int, long, double y boolean en los campos que nunca son null ni faltan.
¿Anotaciones de Jackson o de Gson?
Usa Jackson (@JsonProperty) para Spring Boot y la mayoría de los backends en Java, porque Jackson es la biblioteca JSON predeterminada de Spring. Usa Gson (@SerializedName) para Android o en proyectos que ya usen Gson. La anotación asigna cada campo en camelCase a la clave JSON exacta, así que claves como avatar_url o email-notifications se siguen deserializando correctamente.
¿Qué hacen las anotaciones de Lombok?
@Data genera getters, setters, equals, hashCode y toString; @Builder añade un builder fluido; @NoArgsConstructor y @AllArgsConstructor añaden los constructores que necesitan Jackson y el builder. Añade la dependencia org.projectlombok:lombok y activa el procesamiento de anotaciones en tu IDE.
¿Puedo generar records de Java?
Sí. Elige Records (Java 16+) para obtener clases record inmutables con las anotaciones JSON en cada componente. Jackson 2.12 y posteriores y Gson 2.10 y posteriores pueden deserializar records directamente.
¿Cómo se gestionan los arrays de objetos?
Todos los objetos de un array se combinan en una sola clase. Una clave que solo aparece en algunos elementos se incluye igualmente, así que no se pierde ningún dato; con Tipos primitivos marcado, ese campo mantiene un tipo envoltorio (por ejemplo Integer) para poder contener null.
¿Se sube mi JSON?
No. El análisis y la generación de código se ejecutan en JavaScript dentro de esta página, así que tu JSON nunca sale de tu dispositivo.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.
Herramientas relacionadas
Ver todas las de Conversores de datos y formatos de archivo →