Zum Inhalt springen

JSON in Java-Klassen umwandeln

Erzeugt Java-Klassen aus JSON: Die Seite führt json_typegen (WebAssembly) im Kotlin-Modus aus und schreibt jede data class in eine Java-Klasse mit privaten Feldern, einem Konstruktor mit allen Argumenten, Gettern und Settern um.

Ein POJO erstellen, um eine REST-Antwort mit Jackson zu deserialisieren.

JSON

Wann sie hilft

  • Ein POJO erstellen, um eine REST-Antwort mit Jackson zu deserialisieren.
  • DTO-Klassen für einen Spring-Controller aus einem Beispiel-Payload skizzieren.

Anwendung

  1. Füge ein JSON-Objekt oder -Array in den linken Editor ein.
  2. Lies die Klassen: Die Root-Klasse heißt Root, und verschachtelte Objekte werden zu eigenen Klassen, die nach ihrem Schlüssel benannt sind.
  3. Kopiere sie in separate .java-Dateien (Imports für List und Jackson sind enthalten) und passe die Typen bei Bedarf an.

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 und Einschränkungen

Die Erzeugung läuft im Browser mit WebAssembly; es gibt keine Einstellungen.

snake_case-Schlüssel werden zu camelCase-Feldern mit Jackson-@JsonProperty; der Jackson-Import und java.util.List werden bei Verwendung importiert.

Zahlen werden auf Long oder Double abgebildet, Booleans auf Boolean; boolesche Getter verwenden get, nicht is.

Ein null-Wert wird als Object typisiert und ein Array aus nulls als List<?>. Ersetze sie durch konkrete Typen, sobald du die echten Daten kennst.

FAQ

Kann ich ein JSON-Array auf oberster Ebene umwandeln?

Ja. Die Root wird zu einer Wrapper-Klasse Root mit einem Feld List<Root2>, und die Array-Elemente werden zur Klasse Root2.

Werden optionale Felder behandelt?

Schlüssel, die in einigen Array-Elementen fehlen, werden erkannt, aber die Java-Ausgabe verwirft die Optional-Markierung, sodass jedes Feld ein einfacher nullable Wrapper-Typ ist.

Werden Lombok-Annotationen oder Records erzeugt?

Nein. Es werden einfache Klassen mit expliziten Konstruktoren, Gettern und Settern geschrieben.

Wie werden null-Werte typisiert?

Ein Feld, das im Beispiel null ist, wird zu Object (private Object note;), weil sich kein konkreter Typ ableiten lässt. Gib ein Beispiel mit einem echten Wert an, um String, Long oder eine verschachtelte Klasse zu erhalten.

Spezifikationen und Referenzen