JSON-Verarbeitung in Kotlin: Bibliotheken und Anwendungsbeispiele

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

JSON-Verarbeitung in Kotlin: Überblick über Bibliotheken und praktische Beispiele



JSON (JavaScript Object Notation) bleibt eines der beliebtesten Formate für den Datenaustausch zwischen Client und Server. In der Sprache Kotlin, die aktiv für die Entwicklung von Android-Apps und Serverlösungen verwendet wird, gibt es mehrere leistungsstarke Bibliotheken für die Arbeit mit JSON. In diesem Artikel werden wir die wichtigsten Werkzeuge im Detail besprechen: kotlinx.serialization, Gson, Moshi und Klaxon. Sie erfahren, wie man JSON parst, Objekte serialisiert und Daten effizient verarbeitet.



1. kotlinx.serialization — nativer Ansatz von JetBrains



kotlinx.serialization ist die offizielle Bibliothek der Kotlin-Entwickler. Ihr Hauptvorteil ist die vollständige Integration in das Typsystem der Sprache und die Unterstützung von Multiplattform (KMM). Für die Arbeit muss das Plugin in build.gradle.kts eingebunden werden:



plugins {    kotlin("plugin.serialization") version "1.9.22"}

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


Beispiel für Serialisierung und Deserialisierung von Daten:



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

@Serializabledata class User(val id: Int, val name: String, val email: String)

fun main() { val jsonString = """{"id":1,"name":"Anna","email":"anna@example.com"}""" // Deserialisierung val user = Json.decodeFromString<User>(jsonString) println("Benutzer: ${user.name}, E-Mail: ${user.email}") // Serialisierung val output = Json.encodeToString(user) println(output)}


Besonderheiten:

  • Benötigt keine Reflektion (arbeitet zur Kompilierzeit).
  • Unterstützt benutzerdefinierte Serialisierer und Polymorphie.
  • Ideal geeignet für Kotlin Multiplatform Mobile.


2. Gson — Klassiker von Google



Die Bibliothek Gson ist bekannt für ihre Einfachheit und weite Verbreitung. Sie verwendet Reflektion und eignet sich daher für Projekte, bei denen eine schnelle Einrichtung wichtig ist. Einbindung:



dependencies {    implementation("com.google.code.gson:gson:2.10.1")}


Arbeitsbeispiel:



import com.google.gson.Gson

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

fun main() { val gson = Gson() val json = """{"id":101,"title":"Laptop","price":79990.0}""" // Parsing val product = gson.fromJson(json, Product::class.java) println("Produkt: ${product.title}, Preis: ${product.price}") // Rückkonvertierung val newJson = gson.toJson(product) println(newJson)}


Vorteile und Nachteile:

  • + Minimaler Code für grundlegende Szenarien.
  • + Unterstützung der Annotation @SerializedName für Feld-Mapping.
  • - Die Verwendung von Reflektion kann die Leistung beeinträchtigen.
  • - Probleme bei der Verarbeitung von null und generischen Typen.


3. Moshi — moderne Alternative von Square



Moshi wurde als sicherer und schnellerer Ersatz für Gson entwickelt. Es verwendet ebenfalls Reflektion, bietet aber Codegenerierung durch die Annotation @JsonClass. Einbindung:



dependencies {    implementation("com.squareup.moshi:moshi-kotlin:1.15.0")    ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")}


Anwendungsbeispiel mit Codegenerierung:



import com.squareup.moshi.JsonClassimport com.squareup.moshi.Moshi

@JsonClass(generateAdapter = true)data class Book(val isbn: String, val author: String, val year: Int)

fun main() { val moshi = Moshi.Builder().build() val adapter = moshi.adapter(Book::class.java) val json = """{"isbn":"978-5-17-123456-7","autho

Empfehlungen