JSON zu POJO: Java-Klassen oder Records aus JSON erzeugen
Füge dein JSON ein und du bekommst fertigen Java-Code: eine Klasse für jedes Objekt, mit privaten Feldern, einem Konstruktor ohne Argumente sowie Gettern und Settern, auf Wunsch auch als Java-Records. Verschachtelte Objekte stehen innerhalb ihrer Elternklasse, sodass das ganze Ergebnis in eine einzige .java-Datei passt. Mit Jackson- oder Gson-Annotationen behältst du die ursprünglichen JSON-Schlüssel. Die Umwandlung läuft im Browser, dein JSON wird nicht hochgeladen.
JSON zu POJO umwandeln: so geht es
Die Umwandlung braucht nur wenige Schritte:
- Füge das JSON in das Feld JSON ein (dort steht „JSON hier einfügen...“). Ein eingefügter Text wird sofort umgewandelt. Wenn du tippst, aktualisiert sich der Code etwa 300 Millisekunden, nachdem du aufgehört hast.
- Lies die Klassen unter Java-Code. Eine Zeile darunter wie „2 Klassen erzeugt.“ sagt dir, wie viele geschrieben wurden.
- Wähle direkt unter dem Code Kopieren. Die Schaltfläche zeigt kurz „Kopiert“. Speichere den Code in einer Datei, die nach der Stammklasse heißt, zum Beispiel
Root.java. - Um das Ergebnis zu ändern, öffne Einstellungen: Setze den Name der Stammklasse (Standard ist
Root), wähle unter Annotationen zwischen Keine, Jackson und Gson oder setze ein Häkchen bei Records statt Klassen verwenden. Der Code ändert sich sofort mit jeder Einstellung. - Mit Löschen leerst du das Feld und beginnst von vorn.
JSON zu POJO online: Beispiel mit Java-Klassen
Das fügst du ein: { "user_id": 7, "name": "Ana", "price": 4.5, "tags": ["a", "b"], "address": { "city": "Kyoto" } }
Bei Annotationen auf „Keine“ beginnt das Ergebnis mit import java.util.List; und public class Root. Die Felder lauten Integer userId, String name, Double price, List<String> tags und Address address. Dazu kommen der Konstruktor ohne Argumente sowie Getter und Setter wie getUserId und setUserId.
Das verschachtelte Objekt address wird zu Address, einer public static class innerhalb von Root. Deshalb genügt eine einzige Datei. Der Schlüssel user_id wurde zum Feld userId. Die Statuszeile weist dich darauf hin: „1 Feldname wurde an Java angepasst.“
JSON to Java Record: Records mit Jackson-Annotationen
Setze den Name der Stammklasse auf Order, wähle bei Annotationen die Option Jackson und setze das Häkchen bei Records statt Klassen verwenden. Aus demselben JSON wird dann public record Order(...).
Jede Record-Komponente trägt @JsonProperty("key") mit dem ursprünglichen JSON-Schlüssel, daher wird user_id weiterhin auf userId abgebildet. Wählst du Gson, tragen dieselben Komponenten stattdessen @SerializedName("key"), mit dem passenden Gson-Import. Records brauchen Java 16 oder neuer.
So werden JSON-Typen zu Java-Typen
Alle Typen sind Wrapper-Typen, deshalb darf jedes Feld fehlen oder null sein.
- Ganze Zahl wie
7:Integer. Zu groß dafür (12345678901):Long. Noch größer (99999999999999999999):BigInteger, mit Import. - Zahl mit Dezimalpunkt oder Exponent wie
4.5,1.0oder2e3:Double. - Text:
String.trueoderfalse:Boolean(der Getter heißtgetActive, nichtisActive).null:Object. - Array eines Typs wie
["a", "b"]:List<String>, mit importiertemjava.util.List. Leeres Array oder gemischte Typen:List<Object>. Array im Array:List<List<Integer>>. - Objekt: eine verschachtelte Klasse oder ein Record, benannt nach dem Schlüssel.
Zahlen werden genau so gelesen, wie sie geschrieben sind. Eine lange ID wird also nie gerundet. Imports erscheinen nur, wenn der Code sie braucht. Kommt ein Schlüssel im selben Objekt zweimal vor, gilt der letzte.
Wie Klassen- und Feldnamen entstehen
user_idunduser-namewerden zu den FeldernuserIdunduserName(camelCase).- Ein Java-Schlüsselwort wie
classwird zu_class. - Ein Name, der mit einer Ziffer beginnt, etwa
2nd, wird zu_2nd. - Ein Schlüssel
itemsmit einem Array aus Objekten ergibt die KlasseItemund das FeldList<Item>, denn der Schlüssel wird in die Einzahl gesetzt. - Ein Schlüssel
Stringmit einem Objekt ergibtStringData. Namen, dieString,ListoderObjectverdecken würden, bekommenDataangehängt. - Zwei gleich benannte Objekte: Die zweite Klasse bekommt eine Nummer, weil Klassennamen in der Datei eindeutig sein müssen.
Der Name der Stammklasse wird zu einem gültigen Java-Namen bereinigt. Bleibt das Feld leer, heißt sie Root. Beginnt das JSON selbst mit einem Array aus Objekten, beschreibt Root ein einzelnes Element, und die Seite sagt dir, dass du das JSON als List<Root> lesen sollst.
Wenn das JSON nicht akzeptiert wird
Der Parser ist so streng wie JSON selbst: Kommentare, einfache Anführungszeichen und Kommas am Ende sind Fehler. Unter „Dieses JSON konnte nicht gelesen werden“ steht ein klarer Grund samt Position, etwa „Zeile 3, Spalte 5“, zum Beispiel „Der Parser ist bei „}“ stehen geblieben. Prüfe, ob direkt davor ein Komma, Doppelpunkt, eine Klammer oder ein Anführungszeichen fehlt.“
- Ist dein Text ein JavaScript-Objekt mit Schlüsseln ohne Anführungszeichen oder mit einfachen Anführungszeichen, wandle es zuerst mit „JavaScript-Objekt in JSON“ in striktes JSON um.
- Zum Aufräumen des JSON vor der Umwandlung nimmst du „JSON formatieren“.
- Um das JSON gegen ein Schema zu prüfen, gibt es den „JSON-Schema-Validator“.
- Für TypeScript-Interfaces aus JavaScript hilft „JS in TS umwandeln“.
Gültiges JSON ohne Objekt, etwa 42 oder ein Array aus Zahlen, zeigt „In diesem JSON gibt es kein Objekt, aus dem sich eine Klasse erzeugen lässt.“ Text über 2.000.000 Zeichen wird abgelehnt, ebenso eine Verschachtelung tiefer als 200 Ebenen.
Häufige Fragen
Wie wandle ich JSON in ein POJO in Java um?
Füge das JSON in das Feld „JSON“ ein und kopiere den Code unter „Java-Code“. Du bekommst eine Klasse pro JSON-Objekt, mit privaten Feldern, einem öffentlichen Konstruktor ohne Argumente und öffentlichen getX- und setX-Methoden. Speichere den Code in einer Datei, die nach der Stammklasse heißt, zum Beispiel Root.java, und lies das JSON dann mit Jackson oder Gson.
Wie wandle ich ein JSON-Array in Java-Objekte um?
Füge das Array aus Objekten unverändert ein. Das Tool beschreibt ein Element des Arrays als Stammklasse und sagt dir, dass du das JSON als List lesen sollst. In Jackson ist das ein TypeReference>, in Gson ein TypeToken>. Ein Array innerhalb eines Objekts wird zu einem Feld List, mit einer Klasse, die nach dem Schlüssel benannt ist.
Wie behalte ich die ursprünglichen JSON-Schlüssel mit Jackson oder Gson?
Öffne „Einstellungen“ und wähle unter „Annotationen“ Jackson oder Gson. Jackson fügt @JsonProperty("key") hinzu, Gson @SerializedName("key"), jeweils an jedem Feld samt Import. Bei „Keine“ wird ein Schlüssel wie user_id zum Feld userId, das sich nicht mehr auf das JSON abbilden lässt, solange der ursprüngliche Schlüssel nicht über eine Annotation oder eine Namensstrategie erhalten bleibt.
Kann ich aus JSON Java-Records erzeugen?
Ja. Setze unter „Einstellungen“ das Häkchen bei „Records statt Klassen verwenden“. Jedes JSON-Objekt wird zu public record Name(Type a, Type b) {}, und verschachtelte Objekte werden zu Records innerhalb des übergeordneten Records. Records brauchen Java 16 oder neuer. Annotationen funktionieren weiterhin und stehen an jeder Record-Komponente.
Warum ist eine JSON-Zahl an einer Stelle Integer und an anderer Double?
Der Typ richtet sich danach, wie die Zahl geschrieben ist. Eine ganze Zahl ist ein Integer, ein Long, wenn sie für Integer zu groß ist, und ein BigInteger, wenn sie für Long zu groß ist. Eine Zahl mit Dezimalpunkt oder Exponent ist ein Double, auch wenn hinter dem Punkt nur eine Null steht.
Was passiert, wenn Objekte in einem Array unterschiedliche Schlüssel haben?
Sie werden zu einer Klasse zusammengeführt, die jeden vorkommenden Schlüssel enthält. Auch Schlüssel, die nur manche Objekte haben, bekommen also ein Feld. Hat ein Schlüssel verschiedene Typen oder ist ein Array leer, bekommt das Feld den Typ Object oder List. Prüfe solche Felder von Hand.
Erzeugt das Tool Kotlin-Klassen oder Lombok-Annotationen?
Nein. Die Ausgabe ist reines Java: Klassen mit Gettern und Settern oder Records. Wenn du Lombok nutzt, lösche die Getter und Setter und setze @Data an die Klasse. Eine Kotlin-Data-Class musst du separat schreiben.
Wie groß darf das JSON sein, und wird es hochgeladen?
Bis zu 2.000.000 Zeichen, höchstens 200 Ebenen tief verschachtelt. Die Umwandlung läuft in deinem Browser, das JSON wird also nirgendwo hochgeladen oder gespeichert.
Empfohlen
-
Lamicall Tablet-Ständer, 360° drehbarStell dein Android-Testgerät neben den Laptop und sieh direkt, wie die neuen Modellklassen die Antwort einlesen.
-
Soundcore Q30 Kopfhörer mit Noise CancellingBlende das Großraumbüro aus, während du eine lange JSON-Antwort in Modellklassen überführst.
-
Elgato Stream Deck Neo (8 Tasten)Leg Build, Start und Tests auf eine Taste, damit jeder neue Endpunkt nur einen Tastendruck entfernt ist.
Hilft, die Tools kostenlos zu halten. ✨
Symbolbilder. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.