Kotlin Academy · Oppitunti

Serializable-luokat

Lisää annotaatiot malleihin

Oppitunti 2/413 vaihetta

Serializable-luokat on ilmainen Kotlin Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Kotlin Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.

@Serializable-annotaatio

Jotta luokka voidaan serialisoida, merkitkää se @Serializable-annotaatiolla. Kääntäjäliitännäinen generoi sille sitten serialisoijan.

import kotlinx.serialization.Serializable

@Serializable
data class User(val id: Int, val name: String)

Toimii data-luokkien kanssa

Voitte merkitä minkä tahansa luokan, mutta data-luokat ovat malleissa yleisin valinta, koska niille generoidaan automaattisesti equals-, hashCode- ja toString-funktiot.

Kaikista konstruktorin ominaisuuksista tulee serialisoituja kenttiä.

Oletusarvot

Oletusarvon sisältävät ominaisuudet ovat dekoodauksen aikana valinnaisia. Jos JSON ei sisällä niitä, käytetään oletusarvoa.

@Serializable
data class Config(
    val host: String,
    val port: Int = 8080,
    val secure: Boolean = false
)

Nullable-ominaisuudet

Nullable-tyypit vastaavat JSONin null-arvoa. Nullable-ominaisuus, jolla ei ole oletusarvoa, on silti JSONissa pakollinen (mutta sen arvo voi olla null).

@Serializable
data class Profile(
    val name: String,
    val bio: String? = null
)

Kenttien nimeäminen uudelleen @SerialName-annotaatiolla

JSON-kenttien nimet poikkeavat usein Kotlinin nimeämiskäytännöistä. Käyttäkää @SerialName-annotaatiota niiden yhdistämiseen.

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class Account(
    @SerialName("user_id") val userId: Int,
    @SerialName("full_name") val fullName: String
)

Ominaisuuksien ohittaminen @Transient-annotaatiolla

Merkitkää ominaisuus @Transient-annotaatiolla, jotta se jätetään serialisoinnin ulkopuolelle. Transient-ominaisuuksilla täytyy olla oletusarvo.

import kotlinx.serialization.Transient
import kotlinx.serialization.Serializable

@Serializable
data class Session(
    val token: String,
    @Transient val cachedAt: Long = 0L
)

Sisäkkäiset serialisoitavat luokat

Serialisoitavat luokat voivat sisältää muita serialisoitavia luokkia. Liitännäinen käsittelee koko objektigraafin automaattisesti.

@Serializable
data class Address(val city: String, val zip: String)

@Serializable
data class Company(val name: String, val address: Address)

Kokoelmat malleissa

Vakiokokoelmat, kuten List, Set ja Map, ovat oletusarvoisesti serialisoitavia, kun niiden alkiot ovat serialisoitavia.

@Serializable
data class Team(
    val name: String,
    val members: List<String>,
    val scores: Map<String, Int>
)

Enum-tyyppejä tuetaan

Enum-luokat voidaan merkitä @Serializable-annotaatiolla, ja ne serialisoidaan oletusarvoisesti nimensä mukaan. Käyttäkää enum-arvoissa @SerialName-annotaatiota nimien mukauttamiseen.

@Serializable
enum class Role {
    @SerialName("admin") ADMIN,
    @SerialName("user") USER
}

Pakolliset ja valinnaiset: yhteenveto

Ominaisuus on JSONissa pakollinen, ellei sillä ole oletusarvoa. Keskeiset säännöt:

  • Ei oletusarvoa → pakollinen
  • Oletusarvo on → valinnainen
  • @Transient → ohitetaan, oletusarvo vaaditaan
  • Nullable ilman oletusarvoa → pakollinen, mutta arvo voi olla null

Mitä ei voi serialisoida suoraan

Tyypit, joille ei ole sisäänrakennettua serialisoijaa (esim. java.util.Date, java.time.Instant, UUID), tarvitsevat mukautetun serialisoijan, johon tutustutte myöhemmin.

Niiden serialisointi ilman sellaista aiheuttaa käännösvirheen.

Pikatarkistus

Mikä @Transient-annotaatiota koskeva väite pitää paikkansa?

Kertaus

Opitte merkitsemään mallit:

  • @Serializable luokalle
  • Oletusarvot tekevät kentistä valinnaisia
  • @SerialName nimeää JSON-avaimet uudelleen
  • @Transient jättää kentän pois (oletusarvo tarvitaan)

Seuraavaksi enkoodataan ja dekoodataan JSONia käytännössä.

Aloita maksutta

Opi Kotlin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
51
Oppitunnit
203

Usein kysytyt kysymykset

Onko oppitunti ”Serializable-luokat” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Kotlin Academy-oppimispolun 3 oppituntia, myös oppitunnin “Serializable-luokat”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Serializable-luokat”?

Lisää annotaatiot malleihin Harjoittelet Kotlin Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Kotlin Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Kotlin Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Serializable-luokat”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Kotlin Academy-oppitunnilla?

Kyllä. Jokainen Kotlin Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. kotlinx.serializationin käyttöönotto
  2. Serializable-luokat
  3. JSON-koodaus ja -dekoodaus
  4. Mukautetut serialisoijat
← Takaisin: Kotlin Academy