Arbeiten mit JSON in Kotlin: Parsing und Serialisierung für Anfänger

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 sollte Kotlin mit JSON arbeiten können?

\n\n

JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat, das zum Standard für moderne Webanwendungen und APIs geworden ist. Wenn Sie in Kotlin programmieren, sei es für eine Android-App oder ein Backend, werden Sie früher oder später JSON-Antworten von einem Server parsen oder Ihre eigenen Objekte zum Senden serialisieren müssen.

\n\n

Kotlin ist eine moderne Sprache, die auf der JVM läuft und vollständig mit Java kompatibel ist. Kotlin bietet jedoch eigene leistungsstarke Werkzeuge für die Arbeit mit JSON, die den Code prägnanter und sicherer machen. In diesem Artikel behandeln wir die beiden gängigsten Ansätze: die Verwendung der offiziellen Bibliothek kotlinx.serialization und des bewährten Gson.

\n\n

Der Artikel richtet sich an Anfänger. Wir beginnen mit dem einfachen Parsen eines Strings, gehen dann zur Erstellung komplexer verschachtelter Strukturen über und behandeln am Ende die Serialisierung – die Umwandlung Ihrer Objekte zurück in JSON.

\n\n

1. Projektvorbereitung: Abhängigkeiten und Importe

\n\n

Bevor wir Code schreiben, müssen wir die Bibliotheken hinzufügen. Wir betrachten zwei Varianten.

\n\n

1.1. Installation von kotlinx.serialization

\n\n

Dies ist die offizielle Lösung von JetBrains. Fügen Sie Folgendes in Ihre Datei build.gradle.kts ein:

\n\n
plugins {\n    kotlin("jvm") version "1.9.0"\n    kotlin("plugin.serialization") version "1.9.0"\n}\n\ndependencies {\n    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")\n}\n
\n\n

1.2. Installation von Gson

\n\n

Gson ist eine Bibliothek von Google. Sie ist einfacher einzurichten, erfordert aber mehr manuelle Arbeit:

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

Nach der Synchronisierung des Projekts kann der Code geschrieben werden.

\n\n

2. JSON-Parsing in Kotlin mit kotlinx.serialization

\n\n

Dieser Ansatz ist der „kotlinischste". Sie deklarieren data-Klassen und fügen die Annotation @Serializable hinzu. Die Bibliothek generiert selbstständig den Code für das Parsing.

\n\n

2.1. Einfaches Beispiel: Benutzerdaten

\n\n

Angenommen, wir haben einen JSON-String:

\n\n
{\n    "name": "Anna",\n    "age": 25,\n    "email": "anna@example.com"\n}\n
\n\n

Wir erstellen das Modell:

\n\n
import kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\n\n@Serializable\ndata class User(\n    val name: String,\n    val age: Int,\n    val email: String\n)\n\nfun main() {\n    val jsonString = """\n        {\n            "name": "Anna",\n            "age": 25,\n            "email": "anna@example.com"\n        }\n    """.trimIndent()\n\n    val user = Json.decodeFromString<User>(jsonString)\n    println("Name: ${user.name}, Alter: ${user.age}")\n}\n
\n\n

Wie Sie sehen, kein manuelles Mapping – alles automatisch.

\n\n

2.2. Arbeiten mit Listen und verschachtelten Objekten

\n\n

Echte APIs geben oft Arrays zurück. Fügen wir ein Feld address hinzu:

\n\n
@Serializable\ndata class Address(\n    val city: String,\n    val street: String\n)\n\n@Serializable\ndata class UserWithAddress(\n    val name: String,\n    val age: Int,\n    val address: Address\n)\n\nfun main() {\n    val jsonArray = """\n        [\n            {"name": "Ivan", "age": 30, "address": {"city": "Moskau", "street": "Twerskaja"}},\n            {"name": "Maria", "age": 22, "address": {"city": "SPb", "street": "Newski"}}\n        ]\n    """.trimIndent()\n\n    val users = Json.decodeFromString<List<UserWithAddress>>(jsonArray)\n    users.forEach { println("${it.name} wohnt in ${it.address.city}") }\n}\n
\n\n

Beachten Sie: Für die Arbeit mit Listen wird der generische Typ List<UserWithAddress> verwendet.

\n\n

3. JSON-Parsing mit Gson

\n\n

Gson ist eine klassische Java-Bibliothek. Sie funktioniert auch in Kotlin hervorragend, erfordert aber etwas mehr Code.

\n\n

3.1. Basis-Parsing

\n\n
import com.google.gson.Gson\n\ndata cl                

Blogs

Buchempfehlungen