Traitement JSON en Kotlin : bibliothèques, outils et exemples de code
JSON (JavaScript Object Notation) est l'un des formats d'échange de données les plus populaires dans le développement web moderne. Lors de la création d'applications en Kotlin, que ce soit pour Android, le backend ou le desktop, il est presque toujours nécessaire d'analyser et de générer du JSON. Dans cet article, nous allons détailler les principales bibliothèques pour travailler avec JSON en Kotlin, leurs fonctionnalités, leurs avantages et fournir des exemples pratiques de code.
Pourquoi un traitement JSON spécifique en Kotlin ?
Kotlin est un langage typé statiquement qui fonctionne sur JVM (ainsi que Native et JS). Contrairement aux langages dynamiques où JSON peut être converti en dictionnaire « à la volée », en Kotlin, on travaille généralement avec des objets typés. Cela améliore la fiabilité du code et permet à l'IDE de suggérer automatiquement les champs. Pour convertir JSON en objets Kotlin (data-classes) et vice versa, on utilise des bibliothèques de sérialisation/désérialisation.
Principales bibliothèques JSON pour Kotlin
Examinons les trois bibliothèques les plus populaires : kotlinx.serialization (recommandée par JetBrains), Gson (de Google) et Moshi (de Square).
1. kotlinx.serialization
C'est la bibliothèque officielle de sérialisation pour Kotlin, maintenue par JetBrains. Elle fonctionne de manière multiplateforme (JVM, Native, JS) et n'utilise pas la réflexion, ce qui offre des performances élevées et une sécurité des types.
Installation : ajoutez le plugin et la dépendance dans build.gradle.kts :
plugins { kotlin("plugin.serialization") version "1.9.22"}
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")}Exemple d'utilisation :
import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Jsonimport kotlinx.serialization.encodeToStringimport kotlinx.serialization.decodeFromString
@Serializabledata class User(val name: String, val age: Int, val email: String? = null)
fun main() { val json = Json { prettyPrint = true; ignoreUnknownKeys = true }
// Sérialisation (objet -> JSON) val user = User("Alexeï", 30, "alex@example.com") val jsonString = json.encodeToString(user) println(jsonString)
// Désérialisation (JSON -> objet) val input = """{"name":"Maria","age":25}""" val parsedUser = json.decodeFromString<User>(input) println(parsedUser)}Caractéristiques :
- Prise en charge des champs nullable (comme
emaildans l'exemple). - Configuration via DSL :
prettyPrint,ignoreUnknownKeyset autres. - Travail avec les enum, les sealed-classes, les objets imbriqués.
- Multiplateforme — un seul code pour Android, iOS, le web.
2. Gson
Gson est une bibliothèque classique de Google, largement utilisée dans le monde Java. Elle fonctionne également en Kotlin, mais nécessite des précautions avec les types nullable et les data-classes.
Installation :
dependencies { implementation("com.google.code.gson:gson:2.10.1")}Exemple :
import com.google.gson.Gsonimport com.google.gson.GsonBuilder
data class Product(val id: Int, val title: String, val price: Double)
fun main() { val gson: Gson = GsonBuilder().setPrettyPrinting().create()
// Sérialisation val product = Product(1, "Ordinateur portable", 89999.99) val json = gson.toJson(product) println(json)
// Désérialisation val jsonString = """{"id":2,"title":"Souris","price":1500.50}""" val parsed = gson.fromJson(jsonString, Product::class.java) println(parsed)}Important : Gson utilise la réflexion, donc pour les data-classes Kotlin, il peut être nécessaire d'utiliser Travailler avec les archives ZIP en TypeScript : guide complet sur JSZip et adm-zip Event Bus et le pattern Observer en JavaScript (Node.js) — création de systèmes d'événements flexibles Files d'attente de tâches pour Rust : Aperçu des bibliothèques et outils populaires Programmation réactive en Go : bibliothèque RxGo (Reactive Extensions for Go)@JvmOverloads ou de configurer Aussi dans la bibliothèque
Recommendations