Objektserialisierung in Kotlin: Bibliotheken und Codebeispiele

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

Objektserialisierung in Kotlin: Vollständiger Leitfaden zu Bibliotheken und Tools



Serialisierung ist der Prozess der Umwandlung eines Objekts in ein Format, das gespeichert (z. B. in einer Datei) oder über ein Netzwerk übertragen werden kann (über REST API, Kafka-Nachrichten usw.). Der umgekehrte Prozess – die Deserialisierung – stellt das Objekt aus diesem Format wieder her. Im Kotlin-Ökosystem gibt es mehrere leistungsstarke Bibliotheken für die Serialisierung, jede mit ihren eigenen Besonderheiten. In diesem Artikel werden wir vier Hauptansätze untersuchen: kotlinx.serialization, Gson, Moshi und Jackson.



1. kotlinx.serialization – Die native Wahl für Kotlin



Die von JetBrains entwickelte Bibliothek kotlinx.serialization ist der „Goldstandard“ für Kotlin-Projekte. Sie unterstützt Multiplattform (JVM, JS, Native) und verwendet Annotationen zur Codegenerierung während der Kompilierung.



Einbindung (Gradle)

plugins {    kotlin("jvm") version "1.9.0"    kotlin("plugin.serialization") version "1.9.0"}

dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")}


Anwendungsbeispiel

import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Json

@Serializabledata class User(val name: String, val age: Int, val email: String? = null)

fun main() { val user = User("Ivan", 30, "ivan@example.com")

// Serialisierung in JSON val jsonString = Json.encodeToString(user) println(jsonString) // {"name":"Ivan","age":30,"email":"ivan@example.com"}

// Deserialisierung aus JSON val decoded = Json.decodeFromString<User>(jsonString) println(decoded) // User(name=Ivan, age=30, email=ivan@example.com)}


Besonderheiten

  • Null safety: Unterstützung von nullable-Feldern durch ?
  • Polymorphismus: Serialisierung von sealed classes und Hierarchien
  • Benutzerdefinierte Formate: JSON, CBOR, Protobuf, Properties
  • Leistung: Codegenerierung ohne Reflection


2. Gson – Der Klassiker von Google



Gson ist eine der ältesten Bibliotheken für Java/Kotlin. Sie ist einfach zu verwenden, nutzt jedoch Reflection, was die Leistung bei großen Datenmengen beeinträchtigen kann.



Einbindung

implementation("com.google.code.gson:gson:2.10.1")


Beispiel

import com.google.gson.Gson

data class Product(val id: Int, val title: String, val price: Double)

fun main() { val gson = Gson() val product = Product(1, "Laptop", 79999.99)

// Serialisierung val json = gson.toJson(product) println(json) // {"id":1,"title":"Laptop","price":79999.99}

// Deserialisierung val restored = gson.fromJson(json, Product::class.java) println(restored) // Product(id=1, title=Laptop, price=79999.99)}


Besonderheiten

  • Einfachheit: Minimale Konfiguration
  • Flexibilität: Benutzerdefinierte TypeAdapter für komplexe Typen
  • Nachteile: Reflection, keine native Unterstützung für Kotlin data class (Plugin oder @JvmField erforderlich)


3. Moshi – Moderne Alternative zu Gson



Moshi von Square ist eine leichte Bibliothek mit integrierter Kotlin-Unterstützung. Sie verwendet Codegenerierung durch Annotationen, was sie schneller als Gson macht.



Einbindung

implementation("com.squareup.moshi:moshi-kotlin:1.15.0")kapt("com.squareup.moshi:moshi-kotlin-codegen:1.15.0") // für Codegenerierung


Beispiel

import com.squareup.moshi.Moshiimport com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

@JsonClass(generateAdapter = true)data class Book(val isbn: String, val title: String, val authors:

Empfehlungen