Qu'est-ce que kotlinx.serialization et pourquoi l'utiliser ?
\n\nkotlinx.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\nLes 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
Installation et configuration
\n\nPour utiliser kotlinx.serialization, vous devez ajouter le plugin du compilateur et la dépendance à votre projet.
\n\n1. Ajout du plugin (build.gradle.kts) :
\nplugins {\n kotlin("jvm") version "1.9.0" // ou votre version de Kotlin\n kotlin("plugin.serialization") version "1.9.0"\n}\n\n2. Ajout de la dépendance :
\ndependencies {\n implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")\n}\n\n3. 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\nDémarrage rapide : premier exemple
\n\nimport 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\nSortie :
\nJSON sérialisé : {"name":"Alice","age":30,"email":"alice@example.com"}\nObjet désérialisé : User(name=Alice, age=30, email=alice@example.com)\n\nMéthodes et fonctions principales (8+)
\n\n1. Json.encodeToString()
\nCe qu'elle fait : Sérialise un objet Kotlin en une chaîne JSON.
\nParamètres :
\n- \n
value(T) — l'objet à sérialiser. \n serializer(Serializer<T>?) — sérialiseur personnalisé optionnel. \n
val user = User("Bob", 25)\nval json = Json.encodeToString(user)\nprintln(json) // {"name":"Bob","age":25}\n\n2. Json.decodeFromString()
\nCe qu'elle fait : Désérialise une chaîne JSON en un objet Kotlin.
\nParamètres :
\n- \n
string(String) — la chaîne JSON. \n des
Aussi dans la bibliothèque
Géolocalisation et cartes en Go (Golang) : bibliothèques et exemples de code
Journalisation en TypeScript : la bibliothèque winston
Travailler avec Markdown en Go : bibliothèques blackfriday, goldmark et chroma
Mise en cache en Swift (iOS/macOS) : Redis, NSCache et autres solutions