In diesem Artikel
Warum Kotlin-Data-Klassen aus JSON
Kotlin-Data-Klassen bieten eine kompakte Möglichkeit, JSON-Daten zu modellieren, mit integrierter Unterstützung für equals, hashCode, copy und Destrukturierung. Für Android-Entwickler und Backend-Kotlin-Projekte ist das manuelle Schreiben von Data-Klassen für jede API-Antwort zeitaufwendig und fehleranfällig. Unser JSON-zu-Kotlin-Konverter erzeugt in Sekunden idiomatische Data-Klassen mit korrekter Null Safety, Serialisierungs-Annotationen und Namenskonventionen.
Das Null-Safety-System von Kotlin ist eine seiner größten Stärken, erfordert aber explizite nullbare Typdeklarationen. Beim Konvertieren von JSON — bei dem jedes Feld potenziell null sein kann — analysiert der Konverter die Daten intelligent, um zu bestimmen, welche Felder nullbar sein sollten (mit ? gekennzeichnet) und welche gefahrlos nicht-null sein können, und erzeugt so von Anfang an sichereren Code.
Funktionen des Konverters
Der Konverter erzeugt Kotlin-Data-Klassen, die auf Ihre Serialisierungsbibliothek und Ihre Projektanforderungen zugeschnitten sind.
- Nullbare Typen — Felder mit Null-Werten im JSON-Beispiel erzeugen nullbare Typen (String?), während vorhandene Werte nicht-null-Typen (String) erzeugen, was den Datenvertrag präzise abbildet
- @SerializedName — erzeugt Gson-@SerializedName-Annotationen, wenn JSON-Schlüssel snake_case oder andere Nicht-camelCase-Formate verwenden, und ordnet sie idiomatischen Kotlin-Property-Namen zu
- Standardwerte — optionale Felder können im Konstruktor Standardwerte (leere Strings, leere Listen, null) enthalten, was die Data-Klasse flexibel für unvollständige JSON-Antworten macht
Kostenlos testen – keine Registrierung erforderlich
JSON in Kotlin konvertieren →Android-spezifische Muster
Aus JSON erzeugte Kotlin-Data-Klassen sind in Android-Entwicklungsworkflows besonders nützlich.
- Parcelize — erzeugte Data-Klassen können mit @Parcelize annotiert werden und Parcelable implementieren, um sie zwischen Android-Activities und -Fragments zu übergeben, ohne Parcel-Code schreiben zu müssen
- Room-Integration — die Ausgabe kann durch Hinzufügen von @Entity- und @PrimaryKey-Annotationen als Room-Entity-Klassen dienen und API-Antworten direkt mit der lokalen Datenbankspeicherung verbinden
- Retrofit-Kompatibilität — die erzeugten Klassen funktionieren sofort mit Retrofit und Gson-/Moshi-Konvertern, sodass Sie API-Interfaces definieren und innerhalb weniger Minuten Netzwerkaufrufe starten können
Häufig gestellte Fragen
Wie verarbeitet der Konverter die Null Safety?
Der Konverter prüft jedes Feld im JSON-Beispiel. Felder mit Null-Werten werden als nullbar typisiert (z. B. String?). Felder mit tatsächlichen Werten werden als nicht-null typisiert (z. B. String). Für die genaueste Null Safety sollten Sie ein JSON-Beispiel bereitstellen, das die gesamte Bandbreite Ihrer Daten abbildet — einschließlich Feldern, die in der Produktion null sein können.
Sollte ich val oder var für Data-Klassen-Properties verwenden?
Der Konverter erzeugt standardmäßig val-Properties (schreibgeschützt), gemäß Kotlins Vorliebe für Unveränderlichkeit. Data-Klassen mit val-Properties sind thread-sicher und leichter nachvollziehbar. Wenn Sie für bestimmte Anwendungsfälle veränderbare Properties benötigen, etwa bei Room-Entities mit automatisch generierten IDs, können Sie einzelne Properties nach der Generierung auf var ändern.
Kann ich Sealed Classes für polymorphes JSON erzeugen?
Der Konverter erzeugt aus der JSON-Struktur standardmäßige Data-Klassen. Für polymorphes JSON (bei dem ein Feld den Objekttyp bestimmt) müssten Sie nach der Generierung manuell eine Sealed-Class-Hierarchie erstellen. Nutzen Sie den Konverter, um jede Variante als eigene Data-Klasse zu erzeugen, und fassen Sie diese anschließend in einer Sealed Class mit einem Diskriminator-Feld zusammen.