Vai al contenuto

Trasformatore di classi JSON in Java — Numio

Genera classi Java da JSON: la pagina esegue json_typegen (WebAssembly) in modalità Kotlin e riscrive ogni classe di dati in una classe Java con campi privati, un costruttore all-args, getter e setter.

Creazione di un POJO per deserializzare una risposta REST con Jackson.

JSON

Quando usarlo

  • Creazione di un POJO per deserializzare una risposta REST con Jackson.
  • Schizzo di classi DTO per un controller Spring da un payload di esempio.

Come si usa

  1. Incolla un oggetto o un array JSON nell'editor di sinistra.
  2. Leggi le classi: la radice è Root e gli oggetti annidati diventano classi separate che prendono il nome dalla loro chiave.
  3. Copiali in file .java separati (le importazioni per List e Jackson sono incluse) e modifica i tipi se necessario.

JSON

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

Classi 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;
	}

…

Dettagli e limiti

La generazione viene eseguita nel browser con WebAssembly; non ci sono impostazioni.

Le chiavi snake_case diventano campi camelCase con Jackson @JsonProperty; l'importazione Jackson e java.util.List vengono importati quando utilizzati.

I numeri vengono mappati su Long o Double e i booleani su Boolean; i getter booleani usano get, non is.

Un valore nullo viene digitato come Object e un array di valori nulli come List<?>. Sostituiscili con tipi concreti una volta che conosci i dati reali.

FAQ

Posso convertire un array JSON alla radice?

Sì. La radice diventa una classe wrapper Root con un campo List<Root2> e gli elementi dell'array diventano la classe Root2.

Vengono gestiti i campi facoltativi?

Vengono rilevate le chiavi mancanti da alcuni elementi dell'array, ma l'output Java elimina il marcatore opzionale, quindi ogni campo è un tipo wrapper nullable semplice.

Genera annotazioni o record di Lombok?

No. Scrive classi semplici con costruttori, getter e setter espliciti.

Come vengono digitati i valori nulli?

Un campo nullo nell'esempio diventa Object (oggetto privato note;), poiché non è possibile dedurre alcun tipo concreto. Fornisci un esempio con un valore reale per ottenere String, Long o una classe nidificata.

Specifiche e riferimenti