Was ist kotlinx.serialization und warum wird es benötigt?
\n\nkotlinx.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\nDie 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
Installation und Einrichtung
\n\nFür die Verwendung von kotlinx.serialization müssen Sie das Compiler-Plugin und die Abhängigkeit zu Ihrem Projekt hinzufügen.
\n\n1. Plugin hinzufügen (build.gradle.kts):
\nplugins {\n kotlin("jvm") version "1.9.0" // oder Ihre Kotlin-Version\n kotlin("plugin.serialization") version "1.9.0"\n}\n\n2. Abhängigkeit hinzufügen:
\ndependencies {\n implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")\n}\n\n3. 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\nSchnellstart: Erstes Beispiel
\n\nimport 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\nAusgabe:
\nSerialisiertes JSON: {"name":"Alice","age":30,"email":"alice@example.com"}\nDeserialisiertes Objekt: User(name=Alice, age=30, email=alice@example.com)\n\nWichtige Methoden und Funktionen (8+)
\n\n1. Json.encodeToString()
\nWas es tut: Serialisiert ein Kotlin-Objekt in einen JSON-String.
\nParameter:
\n- \n
value(T) — Das zu serialisierende Objekt. \n serializer(Serializer<T>?) — Optionaler benutzerdefinierter Serialisierer. \n
val user = User("Bob", 25)\nval json = Json.encodeToString(user)\nprintln(json) // {"name":"Bob","age":25}\n\n2. Json.decodeFromString()
\nWas es tut: Deserialisiert einen JSON-String in ein Kotlin-Objekt.
\nParameter:
\n- \n
string(String) — Der JSON-String. \n des