0Pricing
Kotlin Academy · Lektion

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 = Json

In 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 JsonElement parsen

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

  1. kotlinx.serialization einrichten
  2. Serializable-Klassen
  3. JSON-Kodierung und -Dekodierung
  4. Benutzerdefinierte Serialisierer
← Zurück zu Kotlin Academy