JSON-Kodierung und -Dekodierung
Konvertieren Sie zu und von JSON
JSON-Kodierung und -Dekodierung ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Das Json-Objekt
Das Json-Objekt ist das Zentrum der Kodierung und Dekodierung. Die Standardinstanz ist sofort einsatzbereit, oder Sie können eine konfigurierte Instanz erstellen.
import kotlinx.serialization.json.Json
val json = JsonIn einen String kodieren
Verwenden Sie encodeToString, um ein Objekt in einen JSON-String umzuwandeln.
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
@Serializable
data class Book(val title: String, val pages: Int)
fun main() {
val book = Book("Kotlin in Action", 360)
val text = Json.encodeToString(book)
println(text)
}Aus einem String dekodieren
Verwenden Sie decodeFromString, um JSON wieder in ein Objekt zu parsen. Der Zieltyp wird entweder abgeleitet oder explizit angegeben.
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
@Serializable
data class Book(val title: String, val pages: Int)
fun main() {
val text = "{\"title\":\"Atomic Kotlin\",\"pages\":500}"
val book = Json.decodeFromString<Book>(text)
println(book.title)
}Listen kodieren
Collections werden automatisch kodiert. Eine Liste serialisierbarer Objekte wird zu einem JSON-Array.
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
@Serializable
data class Tag(val name: String)
fun main() {
val tags = listOf(Tag("kotlin"), Tag("json"))
println(Json.encodeToString(tags))
}Ausgabe formatieren
Konfigurieren Sie einen Json { }-Builder, um eingerückte Ausgaben zu aktivieren – nützlich für Protokollierung und Debugging.
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
@Serializable
data class Point(val x: Int, val y: Int)
val pretty = Json { prettyPrint = true }
fun main() {
println(pretty.encodeToString(Point(1, 2)))
}Unbekannte Schlüssel ignorieren
Standardmäßig schlägt die Dekodierung fehl, wenn JSON Schlüssel enthält, die in Ihrer Klasse nicht vorkommen. Setzen Sie ignoreUnknownKeys = true, um sie zu überspringen – praktisch bei sich weiterentwickelnden APIs.
import kotlinx.serialization.json.Json
val lenient = Json { ignoreUnknownKeys = true }Standardwerte kodieren
Standardmäßig werden Properties, die ihrem Standardwert entsprechen, nicht geschrieben. Aktivieren Sie encodeDefaults = true, um sie immer einzuschließen.
import kotlinx.serialization.json.Json
val withDefaults = Json { encodeDefaults = true }Mit JsonElement arbeiten
Für dynamisches JSON können Sie es in einen JsonElement-Baum statt in eine typisierte Klasse parsen.
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonElement
fun main() {
val element: JsonElement = Json.parseToJsonElement("{\"a\":1}")
println(element)
}Felder aus JsonObject lesen
Wandeln Sie ein JsonElement in ein JsonObject um, greifen Sie über Schlüssel auf die Felder zu und konvertieren Sie anschließend die primitiven Werte.
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import kotlinx.serialization.json.int
fun main() {
val obj = Json.parseToJsonElement("{\"a\":1}").jsonObject
val a = obj["a"]!!.jsonPrimitive.int
println(a)
}Roundtrip
Das Kodieren und anschließende Dekodieren sollte ein gleiches Objekt zurückgeben (ein Roundtrip). So können Sie Ihr Modell hervorragend auf Plausibilität prüfen.
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
@Serializable
data class P(val x: Int)
fun main() {
val original = P(42)
val back = Json.decodeFromString<P>(Json.encodeToString(original))
println(original == back)
}Häufige Dekodierungsfehler
Achten Sie auf diese Laufzeitausnahmen:
SerializationException: Unexpected JSON token— fehlerhaftes JSON- Erforderliches Feld fehlt — JSON enthält keine Property ohne Standardwert
- Unbekannter Schlüssel — deaktivieren Sie die strikte Prüfung mit
ignoreUnknownKeys
Schnelltest
Ihre API fügt häufig neue JSON-Felder hinzu. Welche Konfiguration verhindert, dass die Dekodierung fehlschlägt?
Zusammenfassung
Sie können nun zwischen Objekten und JSON umwandeln:
encodeToString/decodeFromString- Konfigurieren mit
Json { }:prettyPrint,ignoreUnknownKeys,encodeDefaults - Dynamisches JSON über
JsonElementparsen
Als Nächstes: benutzerdefinierte Serializer für nicht unterstützte Typen.
Häufig gestellte Fragen
Ist die Lektion „JSON-Kodierung und -Dekodierung“ kostenlos?
Ja — der vollständige Text von „JSON-Kodierung und -Dekodierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „JSON-Kodierung und -Dekodierung“?
Konvertieren Sie zu und von JSON Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Kotlin Academy zu starten?
Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „JSON-Kodierung und -Dekodierung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?
Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- kotlinx.serialization einrichten
- Serializable-Klassen
- JSON-Kodierung und -Dekodierung
- Benutzerdefinierte Serialisierer