Sérialisation (kotlinx) pour Kotlin : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que kotlinx.serialization et pourquoi l'utiliser ?

\n\n

kotlinx.serialization est la bibliothèque officielle de JetBrains pour la sérialisation et la désérialisation de données en Kotlin. Elle offre un moyen puissant, type-safe et multiplateforme de convertir des objets Kotlin en divers formats (JSON, Protobuf, CBOR, YAML, etc.) et vice versa.

\n\n

Les principales raisons d'utiliser cette bibliothèque :

\n
    \n
  • Multiplateforme : Fonctionne sur JVM, JS, Native (iOS, Android, Desktop).
  • \n
  • Sécurité des types : La sérialisation est vérifiée à la compilation, ce qui élimine les erreurs d'exécution.
  • \n
  • Performance : Utilise la réflexion uniquement si nécessaire (via le plugin du compilateur).
  • \n
  • Flexibilité : Prend en charge les sérialiseurs personnalisés, le polymorphisme, les champs optionnels et bien plus.
  • \n
  • Intégration avec Kotlin : Exploite pleinement les fonctionnalités du langage (data class, sealed class, null safety).
  • \n
\n\n

Installation et configuration

\n\n

Pour utiliser kotlinx.serialization, vous devez ajouter le plugin du compilateur et la dépendance à votre projet.

\n\n

1. Ajout du plugin (build.gradle.kts) :

\n
plugins {\n    kotlin("jvm") version "1.9.0" // ou votre version de Kotlin\n    kotlin("plugin.serialization") version "1.9.0"\n}
\n\n

2. Ajout de la dépendance :

\n
dependencies {\n    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")\n}
\n\n

3. Pour Maven (pom.xml) :

\n
<plugin>\n    <groupId>org.jetbrains.kotlin</groupId>\n    <artifactId>kotlin-maven-plugin</artifactId>\n    <version>1.9.0</version>\n    <configuration>\n        <pluginOptions>\n            <option>plugin:org.jetbrains.kotlin.plugin.serialization</option>\n        </pluginOptions>\n    </configuration>\n</plugin>\n\n<dependency>\n    <groupId>org.jetbrains.kotlinx</groupId>\n    <artifactId>kotlinx-serialization-json</artifactId>\n    <version>1.6.2</version>\n</dependency>
\n\n

Démarrage rapide : premier exemple

\n\n
import kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\nimport kotlinx.serialization.encodeToString\nimport kotlinx.serialization.decodeFromString\n\n// 1. Définir une classe sérialisable\n@Serializable\ndata class User(val name: String, val age: Int, val email: String? = null)\n\nfun main() {\n    // 2. Créer un objet\n    val user = User("Alice", 30, "alice@example.com")\n\n    // 3. Sérialiser en JSON\n    val jsonString = Json.encodeToString(user)\n    println("JSON sérialisé : $jsonString")\n\n    // 4. Désérialiser à nouveau\n    val decodedUser = Json.decodeFromString<User>(jsonString)\n    println("Objet désérialisé : $decodedUser")\n}
\n\n

Sortie :

\n
JSON sérialisé : {"name":"Alice","age":30,"email":"alice@example.com"}\nObjet désérialisé : User(name=Alice, age=30, email=alice@example.com)
\n\n

Méthodes et fonctions principales (8+)

\n\n

1. Json.encodeToString()

\n

Ce qu'elle fait : Sérialise un objet Kotlin en une chaîne JSON.

\n

Paramètres :

\n
    \n
  • value (T) — l'objet à sérialiser.
  • \n
  • serializer (Serializer<T>?) — sérialiseur personnalisé optionnel.
  • \n
\n
val user = User("Bob", 25)\nval json = Json.encodeToString(user)\nprintln(json) // {"name":"Bob","age":25}
\n\n

2. Json.decodeFromString()

\n

Ce qu'elle fait : Désérialise une chaîne JSON en un objet Kotlin.

\n

Paramètres :

\n
    \n
  • string (String) — la chaîne JSON.
  • \n
  • des

Recommendations