Saltar al contenido

Convertir JSON a clases de Java

Genera clases Java a partir de JSON: la página ejecuta json_typegen (WebAssembly) en modo Kotlin y reescribe cada data class como una clase Java con campos privados, un constructor con todos los argumentos, getters y setters.

Crear un POJO para deserializar una respuesta REST con Jackson.

JSON

Cuándo usarla

  • Crear un POJO para deserializar una respuesta REST con Jackson.
  • Esbozar clases DTO para un controlador de Spring a partir de un payload de ejemplo.

Cómo usarla

  1. Pega un objeto o array JSON en el editor izquierdo.
  2. Lee las clases: la raíz es Root y los objetos anidados pasan a clases separadas con el nombre de su clave.
  3. Cópialas en archivos .java separados (se incluyen los imports de List y Jackson) y ajusta los tipos si hace falta.

JSON

{
  "id": 42,
  "user_name": "ada",
  "active": true,
  "tags": ["admin", "editor"]
}

Clases Java

import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Root {
	private Long id;
	@JsonProperty("user_name")
	private String userName;
	private Boolean active;
	private List<String> tags;

	public Root(Long id, String userName, Boolean active, List<String> tags) {
		this.id = id;
		this.userName = userName;
		this.active = active;
		this.tags = tags;
	}

	public Long getId() {
		return this.id;
	}

…

Detalles y limitaciones

La generación se ejecuta en el navegador con WebAssembly; no hay opciones.

Las claves en snake_case pasan a campos en camelCase con @JsonProperty de Jackson; el import de Jackson y java.util.List se añaden cuando se usan.

Los números se asignan a Long o Double y los booleanos a Boolean; los getters booleanos usan get, no is.

Un valor null se tipa como Object, y un array de nulls como List<?>. Sustitúyelos por tipos concretos cuando conozcas los datos reales.

FAQ

¿Puedo convertir un array JSON en la raíz?

Sí. La raíz pasa a ser una clase contenedora Root con un campo List<Root2>, y los elementos del array pasan a la clase Root2.

¿Se gestionan los campos opcionales?

Se detectan las claves que faltan en algunos elementos del array, pero la salida Java descarta la marca de opcional, así que cada campo es un tipo envoltorio anulable normal.

¿Genera anotaciones de Lombok o records?

No. Escribe clases normales con constructores, getters y setters explícitos.

¿Cómo se tipan los valores null?

Un campo que es null en la muestra pasa a Object (private Object note;), porque no se puede inferir un tipo concreto. Proporciona una muestra con un valor real para obtener String, Long o una clase anidada.

Especificaciones y referencias