Travailler avec JSON en Kotlin : parsing et sérialisation des données

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

Introduction au travail avec JSON en Kotlin



JSON (JavaScript Object Notation) est l'un des formats les plus populaires pour l'échange de données entre le serveur et le client. Dans le développement moderne avec Kotlin, que ce soit pour des applications Android ou des projets serveur, savoir travailler efficacement avec JSON est une compétence essentielle. Dans cet article, nous allons détailler comment effectuer le parsing et la sérialisation JSON en Kotlin, en utilisant les bibliothèques les plus populaires : kotlinx.serialization et Gson.



Que vous créiez une API REST, traitiez des réponses de services externes ou sauvegardiez des paramètres locaux, comprendre les principes de travail avec JSON vous aidera à écrire un code plus propre et plus efficace.



Bases du parsing JSON en Kotlin



Qu'est-ce que la sérialisation et la désérialisation ?



Avant de passer au code, il est important de comprendre deux concepts clés :



  • Sérialisation — conversion d'un objet Kotlin (data class, liste, etc.) en chaîne JSON.
  • Désérialisation (parsing) — processus inverse : à partir d'une chaîne JSON, on crée un objet Kotlin.


Kotlin n'a pas de support JSON intégré, nous utilisons donc des bibliothèques tierces. Examinons les deux plus populaires.



Bibliothèque kotlinx.serialization



kotlinx.serialization est la bibliothèque officielle de JetBrains, qui s'intègre parfaitement avec le langage Kotlin. Elle fonctionne au moment de la compilation, ce qui garantit des performances élevées et la sécurité des types.



Ajout de la bibliothèque



Pour commencer, ajoutez 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")}


Définition du modèle de données



Créons une classe pour représenter un utilisateur :



import kotlinx.serialization.Serializable

@Serializabledata class User( val name: String, val age: Int, val email: String? = null, // champ nullable val roles: List<String> = emptyList())


L'annotation @Serializable indique au compilateur que cette classe peut être sérialisée.



Sérialisation (objet → JSON)



import kotlinx.serialization.encodeToStringimport kotlinx.serialization.json.Json

fun main() { val user = User( name = "Анна", age = 28, email = "anna@example.com", roles = listOf("admin", "user") )

val jsonString = Json.encodeToString(user) println(jsonString) // {"name":"Анна","age":28,"email":"anna@example.com","roles":["admin","user"]}}


Désérialisation (JSON → objet)



import kotlinx.serialization.decodeFromString

fun main() { val json = """{"name":"Иван","age":35,"roles":["user"]}""" val user = Json.decodeFromString<User>(json) println(user.name) // Иван println(user.email) // null (non spécifié dans JSON)}


Configuration de Json



Vous pouvez configurer le comportement du parseur :



val json = Json {    prettyPrint = true          // formatage joli    ignoreUnknownKeys = true    // ignorer les champs supplémentaires dans JSON    isLenient = true            // permettre un parsing non strict (ex: guillemets)}

val user = json.decodeFromString<User>(jsonString)


Bibliothèque Gson



Gson de Google est une autre bibliothèque populaire, particulièrement répandue dans le développement Android.



Ajout de Gson



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()

Blogs

Book Recommendations