JSON zu Java-Klasse
Fügen Sie ein JSON-Beispiel ein, und der Generator gibt eine oder mehrere Java-Klassen mit den richtigen Feldtypen, Gettern, Settern und JSON-Bibliotheksannotation aus. Unterstützt Jackson (@JsonProperty), Gson (@SerializedName) und Lombok (@Data/@Builder) für saubereren Code. Verschachtelte Objekte werden je nach gewähltem Layout zu inneren oder Geschwisterklassen.
Wie man JSON in Java konvertiert
-
1
Fügen Sie das JSON ein
Ein einzelnes Beispiel reicht aus; mehrere Beispiele verbessern die Nullwert-Erkennung.
-
2
Wählen Sie die Bibliothek
Jackson (am häufigsten in Spring), Gson (Android und einige Legacy-Projekte) oder einfaches POJO ohne Annotationen.
-
3
Wählen Sie Extras
Lombok für automatisch generierte Getter/Setter, Builder-Muster, equals/hashCode. Oder lassen Sie es einfach.
-
4
Wählen Sie den verschachtelten Stil
Geschwisterklassen in derselben Datei (Java 17+ öffentliche Klassen müssen separate Dateien sein) oder verschachtelte statische Klassen.
-
5
Kopieren Sie den Code
In Ihr Projekt einfügen. Klassennamen entsprechen den JSON-Schlüsseln; das Paket wird auf das eingestellt, was Sie konfigurieren.
Beispielausgabe: Jackson + Lombok
Eingabe:
{ "firstName": "Alice", "age": 30, "address": { "city": "Madrid" } }
Ausgabe:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {
@JsonProperty("firstName")
private String firstName;
@JsonProperty("age")
private int age;
@JsonProperty("address")
private Address address;
}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Address {
@JsonProperty("city")
private String city;
}
Typzuordnung
| JSON | Java-Typ |
|---|---|
| Zeichenkette | String |
| Ganzzahl (≤ Integer.MAX) | Integer / int |
| große Ganzzahl | Long / BigInteger |
| Dezimalzahl | Double / BigDecimal |
| Wahrheitswert | Boolean / boolean |
| ISO-Datum | LocalDate (Jackson JSR-310) |
| ISO-Datum und Uhrzeit | Instant / OffsetDateTime |
| null (mit nicht-null Geschwister) | Wrapper-Typ (z. B. Integer) |
| Array | List<T> |
| Objekt | Verschachtelte Klasse |
Auswahl zwischen Boxed und Primitiv
- Primitiv (
int,long,boolean), nicht-nullbar, effizient, kein Auto-Boxing. - Boxed (
Integer,Long,Boolean), nullable, erforderlich, wenn das Feld in JSON fehlen oder null sein kann.
Der Generator verwendet standardmäßig Boxed für alles, was als nullable angesehen wird, andernfalls primitiv.
Jackson vs Gson
| Funktion | Jackson | Gson |
|---|---|---|
| Verbreitung in Spring | Ja, Standard | Nein (Konfiguration erforderlich) |
| Leistung | Schneller | Langsamer |
| JSR-310 Datumsunterstützung | Über zusätzliches Modul | Über zusätzliches Modul |
| Polymorphismus | @JsonTypeInfo |
RuntimeTypeAdapter |
| Toleranz für nachgestellte Kommas | Nein (standardmäßig) | Ja |
Häufige Fehler
- Verwendung primitiver Typen für nullable Felder.
intkann nicht null sein; Jackson wird einen Fehler auslösen, wenn das JSON"age": nullhat. Verwenden SieInteger. - Fehlende Datums-Module. Jackson benötigt
jackson-datatype-jsr310fürInstant/LocalDate. Ohne dies fallen Daten aufStringoder Epoch-Zahlen zurück. - Teilen von Wrapper-Typen über nicht verwandte Klassen. Wenn zwei JSON-Formate beide eine verschachtelte
Addresshaben, erstellt der Generator zweiAddress-Klassen. Manuell umbenennen oder vereinheitlichen. - Vergessen von
@JsonIgnoreProperties(ignoreUnknown = true). Strenges Jackson löst bei unbekannten Eigenschaften einen Fehler aus; fügen Sie diese Annotation hinzu (oder konfigurieren Sie global), um eine tolerante Deserialisierung zu ermöglichen.
Häufig gestellte Fragen
Jackson in den meisten Fällen, es ist der Standard in Spring, schneller und hat reichhaltigere Polymorphismus-Unterstützung. Gson ist leichter und bekannter in Android, obwohl Android-Projekte zunehmend Moshi oder kotlinx.serialization verwenden.
Lombok reduziert viel Boilerplate (Getter, Setter, equals, hashCode, Builder). Es wird weit verbreitet verwendet, erfordert jedoch den Lombok-Annotationenprozessor in Ihrem Build. Deaktivieren Sie es, wenn Ihr Projekt Lombok aus Gründen der Abhängigkeits-Hygiene vermeidet.
Felder, die in einem beobachteten Beispiel null sind, werden zu Boxed-Typen (Integer anstelle von int), damit sie null halten können. Jackson deserialisiert dann "age": null ohne Fehler. Fügen Sie @JsonInclude(Include.NON_NULL) hinzu, um nulls bei der Serialisierung zu überspringen.
Ja, wenn Sie “record” auswählen. Records sind prägnant, unveränderlich und funktionieren mit Jackson 2.12+. Für Spring Boot 3-Projekte sind Records plus Lombok-freie Generierung die moderne Wahl.
Verwandte Tools
ASCII-Tabelle Referenz
Vollständige ASCII-Tabelle von 0 bis 127 mit Dezimal-, Hex-, Oktal-, Binär- und numerischer HTML-Zeichenreferenz für jedes Zeichen, einschließlich Steuerzeichen wie NUL, LF und DEL.
HTML-Zeichenreferenz
Durchsuchbare Liste von HTML-Entitäten, ihren benannten und numerischen Codes sowie eine Ein-Klick-Kopie für Sonderzeichen und Symbole.
Farbrad-Explorer
Erforschen Sie das Farbrad interaktiv. Rotieren Sie Harmonien, vergleichen Sie HSL mit RYB, erkennen Sie komplementäre und triadische Paare in Echtzeit.
Referenz für Tastenkombinationen
Durchsuchen Sie dokumentierte Standardkürzel für VS Code, Chrome und Bash mit GNU Readline unter macOS, Windows und Linux.
Zufallsbuchstaben-Generator
Erzeugen Sie zufällige A-Z-Buchstaben. Wählen Sie Anzahl, Großschreibung, Kleinschreibung oder gemischte Schreibweise für Spiele, Aufgaben und Unterricht.
HTML-Formatter
Formatieren Sie HTML lokal im Browser mit zwei oder vier Leerzeichen Einrückung. HTML wird weder hochgeladen noch validiert.
Tool in anderen Sprachen verfügbar
- JSON إلى فئة Java [AR]
- JSON vers classe Java [FR]
- JSON을 Java 클래스로 [KO]
- JSON till Java-klass [SV]
- JSON เป็นคลาส Java [TH]
- JSON naar Java-klasse [NL]
- JSON ke Kelas Java [ID]
- JSON sang lớp Java [VI]
- JSON a Clase Java [ES]
- JSON から Java クラスへ [JA]
- JSON na klasę Java [PL]
- JSON para Classe Java [PT]
- JSON to Java Class [EN]
- JSON in classe Java [IT]
- JSON в класс Java [RU]
- JSON'dan Java Sınıfına [TR]
- JSON 转 Java 类 [ZH]