Kotlin JSON : guide du parsing du débutant au pro

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 : pourquoi le JSON en Kotlin est à la fois une douleur et une joie

\n

Si vous avez déjà développé pour Android ou un backend en Kotlin, vous avez très probablement rencontré le JSON. C'est comme l'air pour un développeur moderne : API, configurations, bases de données – tout parle ce langage. Mais voici le paradoxe : la question "How to parse JSON in Kotlin?" sur Stack Overflow recueille des milliers de vues chaque mois. Pourquoi ? Parce qu'en Kotlin, contrairement à Java, il y a la null safety, et les anciennes bibliothèques comme Gson commencent à "dérailler".

\n

Dans ce tutoriel, nous allons aborder le parsing JSON en Kotlin du simple au complexe. Vous apprendrez à travailler avec Kotlinx Serialization, Moshi et le classique Gson. Nous écrirons du code réel que vous pourrez copier directement dans votre projet. C'est parti !

\n\n
\n\n

Qu'est-ce que le JSON et pourquoi Kotlin ne s'entend pas immédiatement avec lui ?

\n

JSON (JavaScript Object Notation) est un format textuel d'échange de données. Il ressemble à ceci :

\n
{\n  "name": "Kotlin",\n  "year": 2011,\n  "features": ["null safety", "coroutines"]\n}
\n

On pourrait penser que rien ne peut mal tourner ? Mais Kotlin a un typage strict et la null safety. Lorsque vous parsez du JSON, vous devez indiquer explicitement quels champs peuvent être null et lesquels sont obligatoires. Si la bibliothèque ne tient pas compte de cela, vous obtiendrez une NullPointerException ou des bugs étranges.

\n

C'est pourquoi le choix de la bonne bibliothèque pour le parsing JSON en Kotlin n'est pas simplement une "librairie au goût", mais une question de stabilité du projet.

\n\n

Top 3 des bibliothèques pour le parsing JSON en Kotlin

\n

Nous allons examiner trois approches principales. Chacune a ses avantages et ses inconvénients.

\n
    \n
  • Kotlinx Serialization – la bibliothèque officielle de JetBrains. La meilleure intégration avec le langage.
  • \n
  • Moshi – une bibliothèque moderne de Square. Fonctionne à la fois avec Java et Kotlin.
  • \n
  • Gson – le bon vieux standard. Toujours populaire, mais nécessite de la prudence avec Kotlin.
  • \n
\n\n

1. Kotlinx Serialization – le choix des pros

\n

C'est la bibliothèque native pour Kotlin. Elle utilise la génération de code et prend entièrement en charge la null safety. Si vous écrivez un nouveau projet en Kotlin, c'est votre choix.

\n

Installation : Ajoutez le plugin dans build.gradle.kts :

\n
plugins {\n    kotlin("plugin.serialization") version "1.9.0"\n}\n\ndependencies {\n    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")\n}
\n

Exemple de code :

\n
import kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\n\n@Serializable\ndata class User(\n    val name: String,\n    val year: Int,\n    val features: List<String>\n)\n\nfun main() {\n    val jsonString = """\n        {\n            "name": "Kotlin",\n            "year": 2011,\n            "features": ["null safety", "coroutines"]\n        }\n    """.trimIndent()\n\n    val user = Json.decodeFromString<User>(jsonString)\n    println(user.name) // Kotlin\n    println(user.features[0]) // null safety\n}
\n

Notez que Kotlinx Serialization détecte automatiquement les types. Si un champ est absent du JSON et qu'il n'est pas marqué comme nullable dans le data class, vous obtiendrez une exception. C'est une bonne chose – vous ne manquerez pas l'erreur.

\n\n

2. Moshi – flexible et rapide

\n

Moshi est une bibliothèque de Square, créée en tenant compte de Kotlin. Elle prend également en charge la génération de code et la null safety. Contrairement à Gson, Moshi n'utilise pas la réflexion par défaut, ce qui la rend plus rapide.

\n

Installation :

\n
dependencies {\n    implementation("com.squareup.moshi:moshi-kotlin:1.15.0")\n    ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")\n}
\n

Exemple de code :

\n
im                

Blogs

Book Recommendations