JSON-Verarbeitung in Kotlin: Bibliotheken, Werkzeuge und Codebeispiele
JSON (JavaScript Object Notation) ist eines der beliebtesten Datenformate für den Datenaustausch in der modernen Webentwicklung. Bei der Entwicklung von Anwendungen in Kotlin, sei es für Android, Backend oder Desktop, ist es fast immer erforderlich, JSON zu parsen und zu generieren. In diesem Artikel werden wir die wichtigsten Bibliotheken für die Arbeit mit JSON in Kotlin, ihre Funktionen, Vorteile und praktische Codebeispiele im Detail besprechen.
Warum ist eine separate JSON-Verarbeitung in Kotlin notwendig?
Kotlin ist eine statisch typisierte Sprache, die auf der JVM (sowie Native und JS) läuft. Im Gegensatz zu dynamischen Sprachen, in denen JSON „on the fly“ in ein Wörterbuch umgewandelt werden kann, arbeitet man in Kotlin üblicherweise mit typisierten Objekten. Dies erhöht die Zuverlässigkeit des Codes und ermöglicht der IDE, automatisch Felder vorzuschlagen. Für die Umwandlung von JSON in Kotlin-Objekte (data-Klassen) und zurück werden Serialisierungs-/Deserialisierungsbibliotheken verwendet.
Wichtige Bibliotheken für JSON in Kotlin
Wir betrachten die drei beliebtesten Bibliotheken: kotlinx.serialization (von JetBrains empfohlen), Gson (von Google) und Moshi (von Square).
1. kotlinx.serialization
Dies ist die offizielle Bibliothek für Serialisierung in Kotlin, die von JetBrains unterstützt wird. Sie arbeitet plattformübergreifend (JVM, Native, JS) und verwendet keine Reflexion, was eine hohe Leistung und Typsicherheit bietet.
Installation: Fügen Sie das Plugin und die Abhängigkeit in build.gradle.kts hinzu:
plugins { kotlin("plugin.serialization") version "1.9.22"}
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")}Anwendungsbeispiel:
import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Jsonimport kotlinx.serialization.encodeToStringimport kotlinx.serialization.decodeFromString
@Serializabledata class User(val name: String, val age: Int, val email: String? = null)
fun main() { val json = Json { prettyPrint = true; ignoreUnknownKeys = true }
// Serialisierung (Objekt -> JSON) val user = User("Alexej", 30, "alex@example.com") val jsonString = json.encodeToString(user) println(jsonString)
// Deserialisierung (JSON -> Objekt) val input = """{"name":"Maria","age":25}""" val parsedUser = json.decodeFromString<User>(input) println(parsedUser)}Besonderheiten:
- Unterstützung von nullable-Feldern (wie
emailim Beispiel). - Konfiguration über DSL:
prettyPrint,ignoreUnknownKeysund andere. - Arbeit mit enum, sealed-Klassen, verschachtelten Objekten.
- Plattformübergreifend – ein Code für Android, iOS, Web.
2. Gson
Gson ist eine klassische Bibliothek von Google, die in der Java-Welt weit verbreitet ist. In Kotlin funktioniert sie ebenfalls, erfordert jedoch Vorsicht bei nullable-Typen und data-Klassen.
Installation:
dependencies { implementation("com.google.code.gson:gson:2.10.1")}Beispiel:
import com.google.gson.Gsonimport com.google.gson.GsonBuilder
data class Product(val id: Int, val title: String, val price: Double)
fun main() { val gson: Gson = GsonBuilder().setPrettyPrinting().create()
// Serialisierung val product = Product(1, "Laptop", 89999.99) val json = gson.toJson(product) println(json)
// Deserialisierung val jsonString = """{"id":2,"title":"Maus","price":1500.50}""" val parsed = gson.fromJson(jsonString, Product::class.java) println(parsed)}Wichtig: Gson verwendet Reflexion, daher kann für Kotlin data-Klassen @JvmOverloads oder eine Konfiguration von Auch in der Bibliothek
Arbeit mit XML in Java: Bibliotheken und Werkzeuge für das Parsing
Bildverarbeitung in Node.js: Bibliotheken Sharp, Jimp und gm
GraphQL in Go: Vollständiger Leitfaden zur Bibliothek gqlgen
Konfiguration von Java-Anwendungen: Bibliotheken und Werkzeuge
Geolokalisierung und Karten in C# (.NET): Überblick über Bibliotheken und Werkzeuge
Empfehlungen