Serializable-luokat
Lisää annotaatiot malleihin
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:
@Serializableluokalle- Oletusarvot tekevät kentistä valinnaisia
@SerialNamenimeää JSON-avaimet uudelleen@Transientjättää kentän pois (oletusarvo tarvitaan)
Seuraavaksi enkoodataan ja dekoodataan JSONia käytännössä.
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
- kotlinx.serializationin käyttöönotto
- Serializable-luokat
- JSON-koodaus ja -dekoodaus
- Mukautetut serialisoijat