Traitement JSON en Kotlin : aperçu des bibliothèques et exemples pratiques
JSON (JavaScript Object Notation) reste l'un des formats les plus populaires pour l'échange de données entre le client et le serveur. En langage Kotlin, qui est activement utilisé pour le développement d'applications Android et de solutions serveur, il existe plusieurs bibliothèques puissantes pour travailler avec JSON. Dans cet article, nous allons détailler les principaux outils : kotlinx.serialization, Gson, Moshi et Klaxon. Vous apprendrez à analyser JSON, sérialiser des objets et traiter efficacement les données.
1. kotlinx.serialization — l'approche native de JetBrains
kotlinx.serialization est la bibliothèque officielle des créateurs de Kotlin. Son principal avantage est l'intégration complète avec le système de types du langage et la prise en charge multiplateforme (KMM). Pour l'utiliser, vous devez ajouter le plugin dans build.gradle.kts :
plugins { kotlin("plugin.serialization") version "1.9.22"}
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")}Exemple de sérialisation et désérialisation de données :
import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Json
@Serializabledata class User(val id: Int, val name: String, val email: String)
fun main() { val jsonString = """{"id":1,"name":"Анна","email":"anna@example.com"}""" // Désérialisation val user = Json.decodeFromString<User>(jsonString) println("Utilisateur : ${user.name}, email : ${user.email}") // Sérialisation val output = Json.encodeToString(user) println(output)}Caractéristiques :
- Ne nécessite pas de réflexion (fonctionne à la compilation).
- Prend en charge les sérialiseurs personnalisés et le polymorphisme.
- Idéal pour Kotlin Multiplatform Mobile.
2. Gson — le classique de Google
La bibliothèque Gson est connue pour sa simplicité et sa large diffusion. Elle utilise la réflexion, ce qui la rend adaptée aux projets où la rapidité de configuration est importante. Ajout de la dépendance :
dependencies { implementation("com.google.code.gson:gson:2.10.1")}Exemple d'utilisation :
import com.google.gson.Gson
data class Product(val id: Int, val title: String, val price: Double)
fun main() { val gson = Gson() val json = """{"id":101,"title":"Ноутбук","price":79990.0}""" // Analyse val product = gson.fromJson(json, Product::class.java) println("Produit : ${product.title}, prix : ${product.price}") // Conversion inverse val newJson = gson.toJson(product) println(newJson)}Avantages et inconvénients :
- + Minimum de code pour les scénarios de base.
- + Prise en charge des annotations
@SerializedNamepour le mappage des champs. - - L'utilisation de la réflexion peut réduire les performances.
- - Problèmes avec la gestion de
nullet des types génériques.
3. Moshi — l'alternative moderne de Square
Moshi a été créée comme un remplacement plus sûr et plus rapide de Gson. Elle utilise également la réflexion, mais propose la génération de code via l'annotation @JsonClass. Ajout de la dépendance :
dependencies { implementation("com.squareup.moshi:moshi-kotlin:1.15.0") ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")}Exemple d'utilisation avec génération de code :
import com.squareup.moshi.JsonClassimport com.squareup.moshi.Moshi
@JsonClass(generateAdapter = true)data class Book(val isbn: String, val author: String, val year: Int)
fun main() { val moshi = Moshi.Builder().build() val adapter = moshi.adapter(Book::class.java) val json = """{"isbn":"978-5-17-123456-7","autho Aussi dans la bibliothèque
gRPC pour Java : bibliothèques, configuration et exemples d'utilisation
Files d'attente de tâches en Kotlin : Coroutines, KJob et modèles avancés
Guide complet gRPC Java : tutoriel avec exemples
Travailler avec Apache Kafka en C++ : bibliothèques et exemples