Sérialisation d'objets en Kotlin : bibliothèques et exemples de code

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

Sérialisation d'objets en Kotlin : guide complet des bibliothèques et outils



La sérialisation est le processus de conversion d'un objet dans un format qui peut être sauvegardé (par exemple, dans un fichier) ou transmis sur un réseau (via une API REST, des messages Kafka, etc.). Le processus inverse — la désérialisation — reconstruit l'objet à partir de ce format. Dans l'écosystème Kotlin, il existe plusieurs bibliothèques puissantes pour la sérialisation, chacune avec ses propres caractéristiques. Dans cet article, nous examinerons quatre approches principales : kotlinx.serialization, Gson, Moshi et Jackson.



1. kotlinx.serialization — le choix natif pour Kotlin



Développée par JetBrains, la bibliothèque kotlinx.serialization est la « référence » pour les projets Kotlin. Elle prend en charge la multiplateforme (JVM, JS, Native) et utilise des annotations pour la génération de code à la compilation.



Intégration (Gradle)

plugins {    kotlin("jvm") version "1.9.0"    kotlin("plugin.serialization") version "1.9.0"}

dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")}


Exemple d'utilisation

import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Json

@Serializabledata class User(val name: String, val age: Int, val email: String? = null)

fun main() { val user = User("Иван", 30, "ivan@example.com")

// Sérialisation en JSON val jsonString = Json.encodeToString(user) println(jsonString) // {"name":"Иван","age":30,"email":"ivan@example.com"}

// Désérialisation depuis JSON val decoded = Json.decodeFromString<User>(jsonString) println(decoded) // User(name=Иван, age=30, email=ivan@example.com)}


Caractéristiques

  • Null safety : prise en charge des champs nullable via ?
  • Polymorphisme : sérialisation des sealed class et hiérarchies
  • Formats personnalisés : JSON, CBOR, Protobuf, Properties
  • Performances : génération de code sans réflexion


2. Gson — le classique de Google



Gson est l'une des plus anciennes bibliothèques pour Java/Kotlin. Elle est simple à utiliser, mais utilise la réflexion, ce qui peut réduire les performances sur de gros volumes de données.



Intégration

implementation("com.google.code.gson:gson:2.10.1")


Exemple

import com.google.gson.Gson

data class Product(val id: Int, val title: String, val price: Double)

fun main() { val gson = Gson() val product = Product(1, "Ноутбук", 79999.99)

// Sérialisation val json = gson.toJson(product) println(json) // {"id":1,"title":"Ноутбук","price":79999.99}

// Désérialisation val restored = gson.fromJson(json, Product::class.java) println(restored) // Product(id=1, title=Ноутбук, price=79999.99)}


Caractéristiques

  • Simplicité : configuration minimale
  • Flexibilité : TypeAdapter personnalisés pour les types complexes
  • Inconvénients : réflexion, pas de support natif pour les data class Kotlin (nécessite un plugin ou @JvmField)


3. Moshi — l'alternative moderne à Gson



Moshi de Square est une bibliothèque légère avec un support natif de Kotlin. Elle utilise la génération de code via des annotations, ce qui la rend plus rapide que Gson.



Intégration

implementation("com.squareup.moshi:moshi-kotlin:1.15.0")kapt("com.squareup.moshi:moshi-kotlin-codegen:1.15.0") // pour la génération de code


Exemple

import com.squareup.moshi.Moshiimport com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

@JsonClass(generateAdapter = true)data class Book(val isbn: String, val title: String, val authors:

Recommendations