Arbeit mit JSON in Kotlin: Parsing und Serialisierung in der Praxis

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

Einleitung: Warum JSON die Grundlage moderner Kotlin-Entwicklung ist

JSON (JavaScript Object Notation) bleibt der De-facto-Standard für den Datenaustausch zwischen Server und Client, sei es eine mobile App auf Android oder ein Backend mit Ktor. Im Kotlin-Ökosystem ist die Arbeit mit JSON dank der strengen Typisierung der Sprache und leistungsstarker Serialisierungsbibliotheken besonders komfortabel. In diesem Artikel betrachten wir zwei Hauptansätze: die Verwendung der offiziellen Bibliothek kotlinx.serialization und der beliebten Gson. Sie erfahren, wie Sie komplexe Strukturen parsen, Objekte serialisieren und Ausnahmen in der Praxis behandeln.



Projektvorbereitung und Einbindung von Abhängigkeiten

Bevor wir Code schreiben, müssen die Bibliotheken in die Datei build.gradle.kts (für Gradle) eingefügt werden. Betrachten wir beide Varianten.



Variante 1: kotlinx.serialization (empfohlen)

  • Fügen Sie das Plugin in plugins hinzu: kotlin("plugin.serialization") version "1.9.22"
  • Geben Sie in dependencies an: implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")


Variante 2: Gson (für Kompatibilität mit Java-Projekten)

  • Fügen Sie in dependencies hinzu: implementation("com.google.code.gson:gson:2.10.1")


// build.gradle.kts — vollständiges Beispiel für kotlinx.serializationplugins {    kotlin("jvm") version "1.9.22"    kotlin("plugin.serialization") version "1.9.22"}

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


JSON-Parsing in Kotlin: Vom Einfachen zum Komplexen

Parsing (Deserialisierung) ist die Umwandlung eines JSON-Strings in ein Kotlin-Objekt. Betrachten wir es am Beispiel von Benutzerdaten.



Beispieldaten

{  "id": 123,  "name": "Anna",  "email": "anna@example.com",  "active": true}


Erstellen einer Data Class

Für beide Bibliotheken wird dieselbe Klasse verwendet. Wichtig: Für kotlinx.serialization muss die Annotation @Serializable hinzugefügt werden.

import kotlinx.serialization.Serializable

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


Parsing mit kotlinx.serialization

import kotlinx.serialization.json.Json

fun parseWithKotlinx(jsonString: String): User { val json = Json { ignoreUnknownKeys = true } // unbekannte Felder ignorieren return json.decodeFromString<User>(jsonString)}

// Verwendung:fun main() { val json = """{"id":123,"name":"Anna","email":"anna@example.com","active":true}""" val user = parseWithKotlinx(json) println(user.name) // Anna}


Parsing mit Gson

import com.google.gson.Gson

fun parseWithGson(jsonString: String): User { val gson = Gson() return gson.fromJson(jsonString, User::class.java)}

// Verwendung:fun main() { val json = """{"id":123,"name":"Anna","email":"anna@example.com","active":true}""" val user = parseWithGson(json) println(user.email) // anna@example.com}


Serialisierung: Ein Objekt in JSON umwandeln

Der umgekehrte Prozess – das Erstellen eines JSON-Strings aus einem Objekt – ist ebenso wichtig für das Senden von Daten an den Server.



Serialisierung mit kotlinx.serialization

import kotlinx.serialization.encodeToString

fun serializeWithKotlinx(user: User): String { val json = Json { prettyPrint = true } return json.encodeToString(user)}

// Ergebnis:// {// "id": 123,// "name": "Anna",// "email": "anna@example.com",// "active": true// }


Serialisierung mit Gson

fun serializeWithGson(user: User): String {    val gson = GsonBuilder().setPrettyPrinting().create()    return gson.toJson(user)}<                

Blogs

Buchempfehlungen