Traitement JSON en Kotlin : guide complet
JSON (JavaScript Object Notation) reste l'un des formats d'échange de données les plus populaires dans le développement web, les applications mobiles et les microservices. Kotlin, en tant que langage moderne pour JVM, Android et les projets multiplateformes, offre plusieurs outils puissants pour travailler avec JSON. Dans cet article, nous allons détailler les principales bibliothèques, leurs fonctionnalités et les meilleures pratiques.
Pourquoi une bibliothèque JSON en Kotlin ?
Bien que Kotlin fonctionne sur JVM et puisse utiliser les bibliothèques Java, les solutions natives Kotlin (par exemple, kotlinx.serialization) offrent :
- Sécurité des types à la compilation
- Prise en charge des data-classes et des sealed-classes
- Multiplateforme (KMP)
- Code boilerplate minimal
Principales bibliothèques pour travailler avec JSON en Kotlin
1. kotlinx.serialization (recommandé)
Il s'agit de la bibliothèque officielle de JetBrains, intégrée à l'écosystème Kotlin. Elle prend en charge la multiplateforme et ne nécessite pas de réflexion.
Ajout (Gradle) :
plugins { kotlin("jvm") version "1.9.22" kotlin("plugin.serialization") version "1.9.22"}
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")}Exemple d'analyse JSON :
import kotlinx.serialization.*import kotlinx.serialization.json.*
@Serializabledata class User( val id: Int, val name: String, val email: String, @SerialName("is_active") val isActive: Boolean = false)
fun main() { val jsonString = """ { "id": 1, "name": "Иван Петров", "email": "ivan@example.com", "is_active": true } """.trimIndent()
val user = Json.decodeFromString<User>(jsonString) println("Utilisateur : ${user.name}, actif : ${user.isActive}")
// Sérialisation en JSON val jsonOutput = Json.encodeToString(user) println(jsonOutput)}2. Gson (de Google)
Bibliothèque Java populaire qui s'adapte facilement à Kotlin. Convient aux projets simples sans multiplateforme.
Exemple :
import com.google.gson.Gsonimport com.google.gson.annotations.SerializedName
data class Product( @SerializedName("product_id") val id: Int, val title: String, val price: Double)
fun main() { val gson = Gson() val json = """{"product_id": 101, "title": "Ноутбук", "price": 79999.99}""" val product = gson.fromJson(json, Product::class.java) println("Produit : ${product.title}, prix : ${product.price} roubles") // Sérialisation inverse val jsonOut = gson.toJson(product) println(jsonOut)}3. Moshi (de Square)
Alternative moderne à Gson avec de meilleures performances et la prise en charge de la génération de code Kotlin.
Exemple :
import com.squareup.moshi.Moshiimport com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactoryimport com.squareup.moshi.adapters.PolymorphicJsonAdapterFactory
data class Book( val isbn: String, val author: String, val year: Int)
fun main() { val moshi = Moshi.Builder() .add(KotlinJsonAdapterFactory()) .build() val adapter = moshi.adapter(Book::class.java) val json = """{"isbn": "978-5-17-123456-7", "author": "Лев Толстой", "year": 1877}""" val book = adapter.fromJson(json) println("Livre : ${book?.author} - ISBN : ${book?.isbn}")}Comparaison des bibliothèques
- kotlinx.serialization — le meilleur choix pour les nouveaux projets, la multiplateforme et Android. Nécessite un plugin compilateur.
- Gson — simple à utiliser, adapté aux prototypes rapides
Aussi dans la bibliothèque
NHibernate C# (.NET) : guide complet avec exemples pratiques
Client HTTP pour JavaScript (Node.js) : top bibliothèques 2025
Travailler avec CSV en PHP : lecture, écriture et traitement des données
Client OAuth pour Go (Golang) : Connexion aux fournisseurs OAuth 2.0