← Alle Tools Code Gen

JSON zu Kotlin Data Class Generator

JSON einfügen und idiomatische Kotlin-Data-Classes bereit für Android und serverseitiges Kotlin erhalten.

Kotlin-Data-Classes und Serialisierungsbibliotheken

Kotlin-Data-Classes sind der idiomatische Weg JSON zu modellieren: Sie generieren automatisch equals(), hashCode(), toString() und copy(). Der Generator erzeugt Data-Class-Deklarationen mit einem primären Konstruktor der jede Eigenschaft auflistet. val-Eigenschaften werden standardmäßig für Unveränderlichkeit verwendet; ein Toggle wechselt zu var für veränderliche Modelle.

Kotlinx.serialization ist die Kotlin-first-Bibliothek von JetBrains, die in Kotlin-Multiplatform- und Ktor-Projekten weit verbreitet ist. Der Generator fügt jedem Klassen die @Serializable-Annotation hinzu und @SerialName("key") zu Eigenschaften deren Namen vom JSON-Schlüssel abweichen. Der Gson-Modus fügt @SerializedName("key") für Android-Projekte hinzu die noch Gson mit Retrofit verwenden.

Der Moshi-Modus generiert @JsonClass(generateAdapter = true)-Annotationen und @Json(name = "key") für Eigenschaftsnamen-Overrides. Moshi ist in der Android-Entwicklung wegen seines Kotlin-Codegen-Adapters beliebt der Reflection zur Laufzeit vermeidet.

Typ-Mapping und nullable Eigenschaften

JSON-Zeichenketten werden zu String, Ganzzahlen zu Int (oder Long für große Werte), Dezimalzahlen zu Double, Booleans zu Boolean und Arrays zu List<T>. Verschachtelte Objekte generieren separate Data-Classes. Eigenschaften die in einigen JSON-Objekten null sind oder in einigen Array-Elementen fehlen werden als T? (nullable) mit dem Standardwert null im Konstruktor typisiert.

Kotlins Typsystem unterscheidet non-null (T) von nullable (T?) Typen auf Sprachebene, was natürlich auf die Präsenz/Absenz-Unterscheidung in JSON abbildet. Der Generator markiert ein Feld korrekt als nullable wenn es im JSON-Beispiel als null erscheint oder in einigen Array-Objekten fehlt.

Bei kotlinx.serialization werden Eigenschaften mit Standardwerten automatisch bei der Serialisierung übersprungen wenn sie dem Standard entsprechen. Das bedeutet nullable Eigenschaften vom Typ T? = null werden aus der serialisierten Ausgabe weggelassen wenn sie null sind.

Android- und Kotlin-Multiplatform-Workflows

Android-Entwickler die Retrofit verwenden definieren typischerweise Interface-Methoden deren Rückgabetyp eine Kotlin-Data-Class ist. Fügen Sie die API-Antwort ein, generieren Sie eine Data-Class mit Gson- oder Moshi-Annotationen und verwenden Sie sie als Retrofit-Call-Typ.

Kotlin Multiplatform Mobile (KMM)-Projekte teilen Datenmodelle zwischen Android und iOS. Kotlinx.serialization ist die empfohlene Bibliothek für KMM wegen Multiplattform-Unterstützung. Die generierten @Serializable-Data-Classes funktionieren auf allen KMM-Zielen ohne Änderung.

Ktor-Serverprojekte verwenden kotlinx.serialization nativ. Der Generator erzeugt Data-Classes die direkt als Ktor-Routen-Handler-Parametertypen und Antwort-Bodies verwendet werden können.

FAQ

Werden meine Daten an einen Server gesendet?

Nein. Die gesamte Verarbeitung findet vollständig in Ihrem Browser statt. Ihr JSON verlässt Ihr Gerät nie.

Welche Serialisierungsbibliothek soll ich wählen?

Verwenden Sie kotlinx.serialization für Kotlin Multiplatform und Ktor. Gson für Legacy-Android-Projekte. Moshi für Android-Projekte die Codegen-Adapter ohne Reflection wollen.

Wie werden Kotlin-reservierte Wörter als Eigenschaftsnamen behandelt?

Kotlin-reservierte Wörter wie "class", "object", "fun" und "when" werden mit Backticks escaped (z.B. `class`) und @SerialName / @Json bewahrt den ursprünglichen JSON-Schlüssel.

Kann ich Sealed Classes für diskriminierte Unions generieren?

Der Basis-Generator erzeugt Data-Classes. Sealed-Class-Generierung für diskriminierte Union-Muster ist nicht automatisch, aber die Data-Class-Ausgabe liefert einen soliden Ausgangspunkt.

Werden tief verschachtelte Strukturen unterstützt?

Ja. Jedes verschachtelte JSON-Objekt wird zu seiner eigenen Data-Class. Alle generierten Klassen werden in einer Datei in Abhängigkeitsreihenfolge ausgegeben.

Ähnliche Tools