Serialization (kotlinx) für Kotlin: Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist kotlinx.serialization und warum wird es benötigt?

\n\n

kotlinx.serialization ist die offizielle Bibliothek von JetBrains zur Serialisierung und Deserialisierung von Daten in Kotlin. Sie bietet eine leistungsstarke, typsichere und plattformübergreifende Möglichkeit, Kotlin-Objekte in verschiedene Formate (JSON, Protobuf, CBOR, YAML und andere) und zurück zu konvertieren.

\n\n

Die Hauptgründe für die Verwendung dieser Bibliothek:

\n
    \n
  • Plattformübergreifend: Funktioniert auf JVM, JS, Native (iOS, Android, Desktop).
  • \n
  • Typsicherheit: Die Serialisierung wird zur Kompilierzeit überprüft, was Laufzeitfehler ausschließt.
  • \n
  • Leistung: Verwendet Reflektion nur bei Bedarf (über das Compiler-Plugin).
  • \n
  • Flexibilität: Unterstützt benutzerdefinierte Serialisierer, Polymorphismus, optionale Felder und vieles mehr.
  • \n
  • Integration mit Kotlin: Nutzt die Sprachfunktionen vollständig aus (data class, sealed class, null safety).
  • \n
\n\n

Installation und Einrichtung

\n\n

Für die Verwendung von kotlinx.serialization müssen Sie das Compiler-Plugin und die Abhängigkeit zu Ihrem Projekt hinzufügen.

\n\n

1. Plugin hinzufügen (build.gradle.kts):

\n
plugins {\n    kotlin("jvm") version "1.9.0" // oder Ihre Kotlin-Version\n    kotlin("plugin.serialization") version "1.9.0"\n}
\n\n

2. Abhängigkeit hinzufügen:

\n
dependencies {\n    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")\n}
\n\n

3. Für Maven (pom.xml):

\n
<plugin>\n    <groupId>org.jetbrains.kotlin</groupId>\n    <artifactId>kotlin-maven-plugin</artifactId>\n    <version>1.9.0</version>\n    <configuration>\n        <pluginOptions>\n            <option>plugin:org.jetbrains.kotlin.plugin.serialization</option>\n        </pluginOptions>\n    </configuration>\n</plugin>\n\n<dependency>\n    <groupId>org.jetbrains.kotlinx</groupId>\n    <artifactId>kotlinx-serialization-json</artifactId>\n    <version>1.6.2</version>\n</dependency>
\n\n

Schnellstart: Erstes Beispiel

\n\n
import kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\nimport kotlinx.serialization.encodeToString\nimport kotlinx.serialization.decodeFromString\n\n// 1. Serialisierbare Klasse definieren\n@Serializable\ndata class User(val name: String, val age: Int, val email: String? = null)\n\nfun main() {\n    // 2. Objekt erstellen\n    val user = User("Alice", 30, "alice@example.com")\n\n    // 3. In JSON serialisieren\n    val jsonString = Json.encodeToString(user)\n    println("Serialisiertes JSON: $jsonString")\n\n    // 4. Zurück deserialisieren\n    val decodedUser = Json.decodeFromString<User>(jsonString)\n    println("Deserialisiertes Objekt: $decodedUser")\n}
\n\n

Ausgabe:

\n
Serialisiertes JSON: {"name":"Alice","age":30,"email":"alice@example.com"}\nDeserialisiertes Objekt: User(name=Alice, age=30, email=alice@example.com)
\n\n

Wichtige Methoden und Funktionen (8+)

\n\n

1. Json.encodeToString()

\n

Was es tut: Serialisiert ein Kotlin-Objekt in einen JSON-String.

\n

Parameter:

\n
    \n
  • value (T) — Das zu serialisierende Objekt.
  • \n
  • serializer (Serializer<T>?) — Optionaler benutzerdefinierter Serialisierer.
  • \n
\n
val user = User("Bob", 25)\nval json = Json.encodeToString(user)\nprintln(json) // {"name":"Bob","age":25}
\n\n

2. Json.decodeFromString()

\n

Was es tut: Deserialisiert einen JSON-String in ein Kotlin-Objekt.

\n

Parameter:

\n
    \n
  • string (String) — Der JSON-String.
  • \n
  • des

Empfehlungen