JSON-Verarbeitung in Kotlin: Vollständiger Leitfaden
JSON (JavaScript Object Notation) bleibt eines der beliebtesten Formate für den Datenaustausch in der Webentwicklung, mobilen Anwendungen und Microservices. Kotlin, als moderne Sprache für JVM, Android und plattformübergreifende Projekte, bietet mehrere leistungsstarke Werkzeuge für die Arbeit mit JSON. In diesem Artikel werden wir die wichtigsten Bibliotheken, ihre Funktionen und bewährte Verfahren im Detail besprechen.
Warum braucht man eine Bibliothek für JSON in Kotlin?
Obwohl Kotlin auf der JVM läuft und Java-Bibliotheken nutzen kann, bieten native Kotlin-Lösungen (z.B. kotlinx.serialization) folgende Vorteile:
- Typsicherheit zur Kompilierzeit
- Unterstützung für data-Klassen und sealed-Klassen
- Plattformübergreifende Unterstützung (KMP)
- Minimaler Boilerplate-Code
Wichtige Bibliotheken für die Arbeit mit JSON in Kotlin
1. kotlinx.serialization (empfohlen)
Dies ist die offizielle Bibliothek von JetBrains, die in das Kotlin-Ökosystem integriert ist. Sie unterstützt Plattformunabhängigkeit und benötigt keine Reflektion.
Einbindung (Gradle):
plugins { kotlin("jvm") version "1.9.22" kotlin("plugin.serialization") version "1.9.22"}
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")}Beispiel für JSON-Parsing:
import kotlinx.serialization.*import kotlinx.serialization.json.*
@Serializabledata class User( val id: Int, val name: String, val email: String, @SerialName("is_active") val isActive: Boolean = false)
fun main() { val jsonString = """ { "id": 1, "name": "Ivan Petrov", "email": "ivan@example.com", "is_active": true } """.trimIndent()
val user = Json.decodeFromString<User>(jsonString) println("Benutzer: ${user.name}, aktiv: ${user.isActive}")
// Serialisierung zurück zu JSON val jsonOutput = Json.encodeToString(user) println(jsonOutput)}2. Gson (von Google)
Eine beliebte Java-Bibliothek, die sich leicht an Kotlin anpassen lässt. Geeignet für einfache Projekte ohne Plattformunabhängigkeit.
Beispiel:
import com.google.gson.Gsonimport com.google.gson.annotations.SerializedName
data class Product( @SerializedName("product_id") val id: Int, val title: String, val price: Double)
fun main() { val gson = Gson() val json = """{"product_id": 101, "title": "Laptop", "price": 79999.99}""" val product = gson.fromJson(json, Product::class.java) println("Produkt: ${product.title}, Preis: ${product.price} Rubel") // Rückwärtsserialisierung val jsonOut = gson.toJson(product) println(jsonOut)}3. Moshi (von Square)
Eine moderne Alternative zu Gson mit besserer Leistung und Unterstützung für Kotlin-Codegenerierung.
Beispiel:
import com.squareup.moshi.Moshiimport com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactoryimport com.squareup.moshi.adapters.PolymorphicJsonAdapterFactory
data class Book( val isbn: String, val author: String, val year: Int)
fun main() { val moshi = Moshi.Builder() .add(KotlinJsonAdapterFactory()) .build() val adapter = moshi.adapter(Book::class.java) val json = """{"isbn": "978-5-17-123456-7", "author": "Leo Tolstoi", "year": 1877}""" val book = adapter.fromJson(json) println("Buch: ${book?.author} - ISBN: ${book?.isbn}")}Vergleich der Bibliotheken
- kotlinx.serialization — die beste Wahl für neue Projekte, Plattformunabhängigkeit und Android. Erfordert ein Compiler-Plugin.
- Gson — einfach zu verwenden, geeignet für schnelle Prototypen
Auch in der Bibliothek
TypeStack/class-validator für TypeScript: Komplettguide mit Beispielen
Testen in Go (Golang): Frameworks und Werkzeuge – vollständiger Leitfaden
Arbeit mit S3 und Cloud-Speichern in Swift (iOS/macOS): Bibliothek AWSS3
HTTP-Client für C# (.NET): Top-Bibliotheken für die Arbeit mit Webanfragen