Skip to main content
CheckTown
Konverter

So wandelst du JSON in Kotlin-Data-Classes um

Veröffentlicht 5 Min. Lesezeit
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.

Verwandte Tools