Klasy serializowalne
Dodawaj adnotacje do modeli
Klasy serializowalne to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Adnotacja @Serializable
Aby klasa mogła być serializowana, należy opatrzyć ją adnotacją @Serializable. Wtyczka kompilatora wygeneruje następnie dla niej serializator.
import kotlinx.serialization.Serializable
@Serializable
data class User(val id: Int, val name: String)Działa z klasami danych
Adnotację można zastosować do dowolnej klasy, ale klasy danych są najczęściej wybierane jako modele, ponieważ automatycznie generują metody equals, hashCode i toString.
Wszystkie właściwości konstruktora stają się serializowanymi polami.
Wartości domyślne
Właściwości z wartościami domyślnymi stają się opcjonalne podczas dekodowania. Jeśli JSON ich nie zawiera, zostanie użyta wartość domyślna.
@Serializable
data class Config(
val host: String,
val port: Int = 8080,
val secure: Boolean = false
)Właściwości dopuszczające null
Typy dopuszczające null są mapowane na wartość JSON null. Właściwość dopuszczająca null bez wartości domyślnej nadal jest wymagana w JSON (ale jej wartością może być null).
@Serializable
data class Profile(
val name: String,
val bio: String? = null
)Zmiana nazw pól za pomocą @SerialName
Nazwy pól JSON często różnią się od konwencji nazewniczych Kotlin. Do ich mapowania należy użyć @SerialName.
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class Account(
@SerialName("user_id") val userId: Int,
@SerialName("full_name") val fullName: String
)Pomijanie właściwości za pomocą @Transient
Aby wykluczyć właściwość z serializacji, należy oznaczyć ją adnotacją @Transient. Właściwości przejściowe muszą mieć wartość domyślną.
import kotlinx.serialization.Transient
import kotlinx.serialization.Serializable
@Serializable
data class Session(
val token: String,
@Transient val cachedAt: Long = 0L
)Zagnieżdżone klasy serializowalne
Klasy serializowalne mogą zawierać inne klasy serializowalne. Wtyczka automatycznie obsługuje cały graf.
@Serializable
data class Address(val city: String, val zip: String)
@Serializable
data class Company(val name: String, val address: Address)Kolekcje w modelach
Standardowe kolekcje, takie jak List, Set i Map, są serializowalne od razu, jeśli ich elementy są serializowalne.
@Serializable
data class Team(
val name: String,
val members: List<String>,
val scores: Map<String, Int>
)Obsługa typów wyliczeniowych
Klasy wyliczeniowe można opatrzyć adnotacją @Serializable; domyślnie są serializowane do swoich nazw. Za pomocą @SerialName zastosowanej do elementów można je dostosować.
@Serializable
enum class Role {
@SerialName("admin") ADMIN,
@SerialName("user") USER
}Podsumowanie: wymagane a opcjonalne
Właściwość jest wymagana w JSON, chyba że ma wartość domyślną. Najważniejsze zasady:
- Brak wartości domyślnej → właściwość wymagana
- Wartość domyślna → właściwość opcjonalna
@Transient→ właściwość pomijana, musi mieć wartość domyślną- Właściwość dopuszczająca null bez wartości domyślnej → wymagana, ale może mieć wartość null
Czego nie można bezpośrednio serializować
Typy bez wbudowanego serializatora (np. java.util.Date, java.time.Instant, UUID) wymagają własnego serializatora, który zostanie omówiony później.
Próba serializacji takich typów bez własnego serializatora powoduje błąd kompilacji.
Szybkie sprawdzenie
Które stwierdzenie dotyczące @Transient jest prawdziwe?
Podsumowanie
W modelach poznali Państwo następujące adnotacje:
@Serializablena klasie- Wartości domyślne sprawiają, że pola są opcjonalne
@SerialNamezmienia nazwy kluczy JSON@Transientwyklucza pole (wymaga wartości domyślnej)
Następny temat: kodowanie i dekodowanie JSON.
Ucz się Kotlin dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 51
- Lekcje
- 203
Często zadawane pytania
Czy lekcja „Klasy serializowalne” jest bezpłatna?
Tak — pełny tekst „Klasy serializowalne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Klasy serializowalne”?
Dodawaj adnotacje do modeli Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?
Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Klasy serializowalne”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?
Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Konfiguracja kotlinx.serialization
- Klasy serializowalne
- Kodowanie i dekodowanie JSON
- Niestandardowe serializery