Naar de inhoud

JSON naar Java-klassentransformator — Numio

Genereert Java-klassen uit JSON: de pagina voert json_typegen (WebAssembly) uit in de Kotlin-modus en herschrijft elke gegevensklasse in een Java-klasse met privévelden, een all-args-constructor, getters en setters.

Een POJO maken om een REST-antwoord te deserialiseren met Jackson.

JSON

Java

Wanneer gebruik je dit?

  • Een POJO maken om een REST-antwoord te deserialiseren met Jackson.
  • DTO-klassen schetsen voor een Spring-controller op basis van een voorbeeldpayload.

Hoe werkt het

  1. Plak een JSON-object of array in de linkereditor.
  2. Lees de klassen: de root is Root en geneste objecten worden afzonderlijke klassen, genoemd naar hun sleutel.
  3. Kopieer ze naar afzonderlijke .java-bestanden (imports voor List en Jackson zijn inbegrepen) en pas de typen indien nodig aan.

JSON

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

Java-klassen

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

…

Details en beperkingen

Generatie draait in de browser met WebAssembly; er zijn geen instellingen.

snake_case-sleutels worden camelCase-velden met Jackson @JsonProperty; de Jackson-import en java.util.List worden geïmporteerd wanneer ze worden gebruikt.

Getallen worden toegewezen aan Long of Double en booleans aan Boolean; Booleaanse getters gebruiken get, niet is.

Een null-waarde wordt getypt als Object en een array met null-waarden als List<?>. Vervang ze door concrete typen zodra u de echte gegevens kent.

FAQ

Kan ik een JSON-array in de root converteren?

Ja. De root wordt een wrapper-klasse Root met een List<Root2>-veld, en de array-elementen worden klasse Root2.

Worden optionele velden afgehandeld?

Sleutels die ontbreken in sommige array-elementen worden gedetecteerd, maar de Java-uitvoer verwijdert de optionele markering, dus elk veld is een eenvoudig null-wrappertype.

Genereert het Lombok-annotaties of -records?

Nee. Het schrijft eenvoudige klassen met expliciete constructors, getters en setters.

Hoe worden nulwaarden getypt?

Een veld dat nul is in het voorbeeld wordt Object (privéobject, opmerking;), omdat er geen concreet type kan worden afgeleid. Geef een voorbeeld met een echte waarde om String, Long of een geneste klasse te krijgen.

Specificaties en referenties