0Pricing
Kotlin Academy · Leçon

Classes sérialisables

Annoter les modèles

Classes sérialisables est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.

L'annotation @Serializable

Pour rendre une classe sérialisable, annotez-la avec @Serializable. Le greffon du compilateur génère ensuite un sérialiseur pour cette classe.

import kotlinx.serialization.Serializable

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

Fonctionne avec les classes de données

Vous pouvez annoter n'importe quelle classe, mais les classes de données sont le choix le plus courant pour les modèles, car elles génèrent automatiquement equals, hashCode et toString.

Toutes les propriétés du constructeur deviennent des champs sérialisés.

Valeurs par défaut

Les propriétés dotées de valeurs par défaut deviennent facultatives lors du décodage. Si le JSON ne les contient pas, la valeur par défaut est utilisée.

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

Propriétés nullables

Les types nullables correspondent à la valeur JSON null. Une propriété nullable sans valeur par défaut reste obligatoire dans le JSON, mais sa valeur peut être nulle.

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

Renommer des champs avec @SerialName

Les noms des champs JSON diffèrent souvent des conventions de nommage de Kotlin. Utilisez @SerialName pour les mettre en correspondance.

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

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

Ignorer des propriétés avec @Transient

Marquez une propriété avec @Transient pour l'exclure de la sérialisation. Les propriétés transitoires doivent avoir une valeur par défaut.

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

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

Classes sérialisables imbriquées

Les classes sérialisables peuvent contenir d'autres classes sérialisables. Le greffon gère automatiquement l'ensemble du graphe.

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

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

Collections dans les modèles

Les collections standard comme List, Set et Map sont sérialisables directement lorsque leurs éléments le sont.

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

Les énumérations sont prises en charge

Les classes d'énumération peuvent être annotées avec @Serializable et sont sérialisées avec leur nom par défaut. Utilisez @SerialName sur les entrées pour les personnaliser.

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

Résumé : obligatoire ou facultatif

Une propriété est obligatoire dans le JSON, sauf si elle possède une valeur par défaut. Règles principales :

  • Sans valeur par défaut → obligatoire
  • Avec une valeur par défaut → facultative
  • @Transient → ignorée, avec une valeur par défaut obligatoire
  • Nullable sans valeur par défaut → obligatoire, mais peut être nulle

Ce qui ne peut pas être sérialisé directement

Les types dépourvus de sérialiseur intégré, comme java.util.Date, java.time.Instant et UUID, nécessitent un sérialiseur personnalisé, que vous apprendrez à créer plus tard.

Essayer de les sérialiser sans sérialiseur provoque une erreur de compilation.

Vérification rapide

Quelle affirmation au sujet de @Transient est correcte ?

Récapitulatif

Vous avez appris à annoter les modèles :

  • @Serializable sur la classe
  • Les valeurs par défaut rendent les champs facultatifs
  • @SerialName renomme les clés JSON
  • @Transient exclut un champ, qui doit avoir une valeur par défaut

Suite : encoder et décoder réellement du JSON.

Questions Fréquemment Posées

La leçon « Classes sérialisables » est-elle gratuite ?

Oui — le texte complet de « Classes sérialisables » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Classes sérialisables » ?

Annoter les modèles Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Kotlin Academy ?

Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Classes sérialisables » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?

Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Configuration de kotlinx.serialization
  2. Classes sérialisables
  3. Encodage et décodage JSON
  4. Sérialiseurs personnalisés
← Retour à Kotlin Academy