JSON-kodning och avkodning
Konvertera till och från JSON
JSON-kodning och avkodning är en gratis lektion i Kotlin Academy på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Kotlin Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Kotlin Academy innehåller totalt 4 lektioner.
Json-objektet
Objektet Json utgör kärnan i kodning och avkodning. Standardinstansen kan användas direkt, eller så kan ni skapa en konfigurerad instans.
import kotlinx.serialization.json.Json
val json = JsonKoda till en sträng
Använd encodeToString för att omvandla ett objekt till en JSON-sträng.
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)
}Avkoda från en sträng
Använd decodeFromString för att tolka JSON tillbaka till ett objekt. Måltypen härleds automatiskt eller anges explicit.
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)
}Koda listor
Samlingar kodas automatiskt. En lista med serialiserbara objekt blir en 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))
}Skriva ut med indrag
Konfigurera en Json { }-byggare för att aktivera indenterad utdata, vilket är användbart för loggning och felsökning.
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)))
}Ignorera okända nycklar
Som standard misslyckas avkodningen om JSON innehåller nycklar som inte finns i klassen. Ange ignoreUnknownKeys = true för att hoppa över dem — praktiskt när API:er utvecklas.
import kotlinx.serialization.json.Json
val lenient = Json { ignoreUnknownKeys = true }Koda standardvärden
Som standard skrivs egenskaper som är lika med sitt standardvärde inte ut. Aktivera encodeDefaults = true för att alltid inkludera dem.
import kotlinx.serialization.json.Json
val withDefaults = Json { encodeDefaults = true }Arbeta med JsonElement
För dynamisk JSON kan ni parsa till ett JsonElement-träd i stället för en typad klass.
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonElement
fun main() {
val element: JsonElement = Json.parseToJsonElement("{\"a\":1}")
println(element)
}Läsa fält från JsonObject
Casta ett JsonElement till JsonObject och läs fält via deras nycklar. Konvertera sedan de primitiva värdena.
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)
}Tur och retur
Om ni först kodar och sedan avkodar bör ni få tillbaka ett likvärdigt objekt (en round trip). Det är ett utmärkt sätt att göra en rimlighetskontroll av modellen.
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)
}Vanliga avkodningsfel
Var uppmärksam på dessa undantag vid körning:
SerializationException: Unexpected JSON token— felaktigt formaterad JSON- Saknat obligatoriskt fält — JSON saknar en egenskap utan standardvärde
- Okänd nyckel — inaktivera strikt läge med
ignoreUnknownKeys
Snabbkontroll
Ert API lägger ofta till nya JSON-fält. Vilken konfiguration hindrar avkodningen från att sluta fungera?
Sammanfattning
Ni kan nu växla mellan objekt och JSON:
encodeToString/decodeFromString- Konfigurera med
Json { }:prettyPrint,ignoreUnknownKeys,encodeDefaults - Parsa dynamisk JSON via
JsonElement
Nästa steg: egna serializers för typer som inte stöds direkt.
Lär dig Kotlin med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 51
- Lektioner
- 203
Vanliga frågor
Är lektionen ”JSON-kodning och avkodning” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Kotlin Academy, inklusive ”JSON-kodning och avkodning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Kotlin Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”JSON-kodning och avkodning”?
Konvertera till och från JSON Ni övar på Kotlin Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Kotlin Academy?
Du behöver inga förkunskaper. Utbildningen i Kotlin Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”JSON-kodning och avkodning”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Kotlin Academy-lektionen?
Ja. Varje Kotlin Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Konfigurera kotlinx.serialization
- Serialiserbara klasser
- JSON-kodning och avkodning
- Anpassade serialiserare