Skip to main content
CheckTown
Convertisseurs

Comment convertir JSON en data classes Kotlin

Publié le 5 min de lecture
Dans cet article

Pourquoi des data classes Kotlin à partir de JSON

Les data classes Kotlin offrent un moyen concis de modéliser les données JSON avec des fonctionnalités intégrées comme equals, hashCode, copy et la déstructuration. Pour les développeurs Android et les projets backend Kotlin, écrire manuellement des data classes pour chaque réponse API est chronophage et source d'erreurs. Notre convertisseur JSON vers Kotlin génère des data classes idiomatiques avec une gestion correcte de la nullabilité, des annotations de sérialisation et des conventions de nommage en quelques secondes.

Le système de null safety de Kotlin est l'une de ses plus grandes forces, mais il exige des déclarations de types nullables explicites. Lors de la conversion de JSON — où tout champ peut potentiellement être null — le convertisseur analyse intelligemment les données pour déterminer quels champs doivent être nullables (marqués avec ?) et lesquels peuvent être non-null en toute sécurité, produisant un code plus sûr dès le départ.

Fonctionnalités du convertisseur

Le convertisseur produit des data classes Kotlin adaptées à votre bibliothèque de sérialisation et aux exigences de votre projet.

  • Types nullables — les champs avec des valeurs null dans l'échantillon JSON génèrent des types nullables (String?), tandis que les valeurs présentes génèrent des types non-null (String), reflétant fidèlement le contrat de données
  • @SerializedName — génère des annotations Gson @SerializedName quand les clés JSON utilisent du snake_case ou d'autres formats non-camelCase, les mappant vers des noms de propriétés Kotlin idiomatiques
  • Valeurs par défaut — les champs optionnels peuvent inclure des valeurs par défaut (chaînes vides, listes vides, null) dans le constructeur, rendant la data class flexible pour les réponses JSON partielles

Essayez gratuitement — sans inscription

Convertir JSON en Kotlin →

Patterns spécifiques Android

Les data classes Kotlin générées à partir de JSON sont particulièrement utiles dans les flux de développement Android.

  • Parcelize — les data classes générées peuvent être annotées avec @Parcelize et implémenter Parcelable pour le passage entre les activités et fragments Android sans écrire de code de parcellisation
  • Intégration Room — la sortie peut servir de classes d'entités Room en ajoutant les annotations @Entity et @PrimaryKey, connectant directement les réponses API au stockage de base de données locale
  • Compatibilité Retrofit — les classes générées fonctionnent immédiatement avec Retrofit et les convertisseurs Gson/Moshi, vous permettant de définir des interfaces API et de commencer les appels réseau en quelques minutes

Questions fréquentes

Comment le convertisseur gère-t-il la null safety ?

Le convertisseur examine chaque champ dans l'échantillon JSON. Les champs avec des valeurs null sont typés comme nullables (ex : String?). Les champs avec des valeurs réelles sont typés comme non-null (ex : String). Pour une null safety plus précise, fournissez un échantillon JSON représentant la gamme complète de vos données — y compris les champs pouvant être null en production.

Faut-il utiliser val ou var pour les propriétés des data classes ?

Le convertisseur génère des propriétés val (lecture seule) par défaut, suivant la préférence de Kotlin pour l'immuabilité. Les data classes avec des propriétés val sont thread-safe et plus faciles à comprendre. Si vous avez besoin de propriétés mutables pour des cas d'utilisation spécifiques comme les entités Room avec des ID auto-générés, vous pouvez changer individuellement les propriétés en var après la génération.

Peut-on générer des sealed classes pour du JSON polymorphique ?

Le convertisseur génère des data classes standard à partir de la structure JSON. Pour du JSON polymorphique (où un champ détermine le type d'objet), vous devrez créer manuellement une hiérarchie de sealed classes après la génération. Utilisez le convertisseur pour générer chaque variante comme une data class séparée, puis enveloppez-les dans une sealed class avec un champ discriminateur.

Outils associés