Moshi pour Kotlin : guide complet avec exemples
1. Qu'est-ce que Moshi et pourquoi l'utiliser ?
Moshi est une bibliothèque moderne de sérialisation et désérialisation JSON, développée par Square. Écrite en Kotlin et Java, elle est avant tout conçue pour les développeurs Kotlin. Moshi offre un moyen puissant, sûr et performant de convertir des objets en JSON et vice versa, avec un minimum de code répétitif.
Pourquoi utiliser Moshi ? Dans le développement d'applications modernes, la gestion du JSON est essentielle : échange de données avec des API REST, stockage de configurations, transmission de messages entre composants. Moshi résout plusieurs problèmes clés : conversion automatique des classes Kotlin en JSON (et inversement) sans avoir à écrire de parseurs manuellement ; typage strict pour éviter les erreurs d'exécution ; prise en charge des objets immuables (data class) et des classes sealed ; personnalisation possible via des adaptateurs. Comparé à Gson ou Jackson, Moshi propose une API plus propre, une meilleure intégration avec Kotlin (notamment la null-safety et les valeurs par défaut) et une taille de bibliothèque réduite.
Moshi est particulièrement utile dans les projets où la performance et la sécurité des types sont cruciales. Elle est largement utilisée dans le développement Android (notamment avec Retrofit et OkHttp), dans les applications serveur avec Ktor, ainsi que dans tout projet Kotlin nécessitant une gestion du JSON. La bibliothèque prend en charge la réflexion (via le module moshi-kotlin) et la génération de code (via moshi-kotlin-codegen), permettant de choisir entre simplicité et performance.
2. Installation
Moshi est disponible sur Maven Central. Pour l'installer, ajoutez les dépendances dans votre fichier build.gradle.kts (Gradle) ou pom.xml (Maven).
Gradle (Kotlin DSL)
// build.gradle.kts
dependencies {
// Bibliothèque principale
implementation("com.squareup.moshi:moshi:1.15.1")
// Module Kotlin (réflexion)
implementation("com.squareup.moshi:moshi-kotlin:1.15.1")
// Génération de code (optionnel, pour améliorer les performances)
ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.1")
// ou kapt("com.squareup.moshi:moshi-kotlin-codegen:1.15.1")
}
Gradle (Groovy)
// build.gradle
dependencies {
implementation 'com.squareup.moshi:moshi:1.15.1'
implementation 'com.squareup.moshi:moshi-kotlin:1.15.1'
ksp 'com.squareup.moshi:moshi-kotlin-codegen:1.15.1'
}
Maven
<dependency>
<groupId>com.squareup.moshi</groupId>
<artifactId>moshi</artifactId>
<version>1.15.1</version>
</dependency>
<dependency>
<groupId>com.squareup.moshi</groupId>
<artifactId>moshi-kotlin</artifactId>
<version>1.15.1</version>
</dependency>
Important : Si vous utilisez la génération de code, n'oubliez pas d'ajouter le plugin KSP (Kotlin Symbol Processing) ou KAPT. Pour KSP, ajoutez dans plugins :
plugins {
id("com.google.devtools.ksp") version "1.9.22-1.0.17"
}
3. Démarrage rapide
Un exemple minimal illustre la sérialisation et la désérialisation de base.
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
// 1. Définir une data class
data class User(
val name: String,
val age: Int,
val email: String?
)
fun main() {
// 2. Créer une instance Moshi avec la fabrique Kotlin
val moshi = Mosh Aussi dans la bibliothèque
Tests en Swift (iOS/macOS) : frameworks et outils
Planificateur de tâches Java : Quartz Scheduler – guide complet
parking_lot pour Rust : guide complet avec exemples