Einleitung: Warum JSON in Kotlin gleichzeitig Leid und Freude ist
\nWenn Sie jemals für Android oder das Backend in Kotlin entwickelt haben, sind Sie mit Sicherheit auf JSON gestoßen. Es ist wie die Luft für moderne Entwickler: APIs, Konfigurationen, Datenbanken – alles spricht diese Sprache. Aber hier ist das Paradoxon: Die Frage "How to parse JSON in Kotlin?" auf Stack Overflow erhält jeden Monat tausende Aufrufe. Warum? Weil Kotlin im Gegensatz zu Java null safety hat und alte Bibliotheken wie Gson anfangen, "verrückt zu spielen".
\nIn diesem Tutorial behandeln wir das JSON-Parsing in Kotlin vom Einfachen zum Komplexen. Sie erfahren, wie Sie mit Kotlinx Serialization, Moshi und dem klassischen Gson arbeiten. Wir schreiben echten Code, den Sie sofort in Ihr Projekt kopieren können. Los geht's!
\n\n\n\n
Was ist JSON und warum versteht sich Kotlin nicht sofort damit?
\nJSON (JavaScript Object Notation) ist ein textbasiertes Format für den Datenaustausch. Es sieht ungefähr so aus:
\n{\n "name": "Kotlin",\n "year": 2011,\n "features": ["null safety", "coroutines"]\n}\nMan könnte meinen, was könnte da schiefgehen? Aber Kotlin hat strenge Typisierung und null safety. Wenn Sie JSON parsen, müssen Sie explizit angeben, welche Felder null sein können und welche obligatorisch sind. Wenn die Bibliothek dies nicht berücksichtigt, erhalten Sie NullPointerException oder seltsame Fehler.
Deshalb ist die Wahl der richtigen Bibliothek für das JSON-Parsing in Kotlin nicht nur "eine Bibliothek nach Geschmack", sondern eine Frage der Projektstabilität.
\n\nTop-3-Bibliotheken für JSON-Parsing in Kotlin
\nWir betrachten drei Hauptansätze. Jeder hat seine Vor- und Nachteile.
\n- \n
- Kotlinx Serialization – die offizielle Bibliothek von JetBrains. Beste Integration mit der Sprache. \n
- Moshi – eine moderne Bibliothek von Square. Funktioniert sowohl mit Java als auch mit Kotlin. \n
- Gson – der gute alte Standard. Immer noch beliebt, erfordert aber Vorsicht bei Kotlin. \n
1. Kotlinx Serialization – die Wahl der Profis
\nDies ist die native Bibliothek für Kotlin. Sie verwendet Codegenerierung und unterstützt vollständig null safety. Wenn Sie ein neues Projekt in Kotlin schreiben, ist dies Ihre Wahl.
\nInstallation: Fügen Sie das Plugin in build.gradle.kts hinzu:
plugins {\n kotlin("plugin.serialization") version "1.9.0"\n}\n\ndependencies {\n implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")\n}\nCodebeispiel:
\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\n\n@Serializable\ndata class User(\n val name: String,\n val year: Int,\n val features: List<String>\n)\n\nfun main() {\n val jsonString = """\n {\n "name": "Kotlin",\n "year": 2011,\n "features": ["null safety", "coroutines"]\n }\n """.trimIndent()\n\n val user = Json.decodeFromString<User>(jsonString)\n println(user.name) // Kotlin\n println(user.features[0]) // null safety\n}\nBeachten Sie: Kotlinx Serialization erkennt die Typen automatisch. Wenn ein Feld im JSON fehlt und es im data class nicht als nullable markiert ist, erhalten Sie eine Ausnahme. Das ist gut – so übersehen Sie keinen Fehler.
2. Moshi – flexibel und schnell
\nMoshi ist eine Bibliothek von Square, die mit Blick auf Kotlin entwickelt wurde. Sie unterstützt ebenfalls Codegenerierung und null safety. Im Gegensatz zu Gson verwendet Moshi standardmäßig keine Reflektion, was es schneller macht.
\nInstallation:
\ndependencies {\n implementation("com.squareup.moshi:moshi-kotlin:1.15.0")\n ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")\n}\nCodebeispiel:
\nim