← Tous les outils Code Gen

Générateur de data classes Kotlin depuis JSON

Collez du JSON et obtenez des data classes Kotlin idiomatiques prêtes pour Android et le Kotlin côté serveur.

Data classes Kotlin et bibliothèques de sérialisation

Les data classes Kotlin sont la façon idiomatique de modéliser JSON : elles auto-génèrent equals(), hashCode(), toString() et copy(). Le générateur produit des déclarations de data class avec un constructeur principal listant chaque propriété. Les propriétés val sont utilisées par défaut pour l'immuabilité ; un toggle bascule vers var pour les modèles mutables.

Kotlinx.serialization est la bibliothèque Kotlin-first maintenue par JetBrains, largement utilisée dans les projets Kotlin Multiplatform et Ktor. Le générateur ajoute l'annotation @Serializable à chaque classe et @SerialName("key") aux propriétés dont les noms diffèrent de la clé JSON. Le mode Gson ajoute @SerializedName("key") pour les projets Android utilisant encore Gson avec Retrofit.

Le mode Moshi génère des annotations @JsonClass(generateAdapter = true) et @Json(name = "key") pour les surcharges de noms de propriétés. Moshi est populaire en développement Android pour son adaptateur codegen Kotlin qui évite la réflexion à l'exécution.

Correspondance de types et propriétés nullables

Les chaînes JSON deviennent String, les entiers Int (ou Long pour les grandes valeurs), les décimaux Double, les booléens Boolean, et les tableaux List<T>. Les objets imbriqués génèrent des data classes séparées. Les propriétés null dans certains objets JSON ou absentes dans certains éléments de tableau sont typées T? (nullable) avec une valeur par défaut null dans le constructeur.

Le système de types Kotlin distingue les types non-null (T) des types nullables (T?) au niveau du langage, ce qui se mappe naturellement à la distinction présence/absence de JSON. Le générateur marque correctement un champ nullable quand il apparaît null dans le JSON exemple ou quand il est absent de certains objets dans un tableau.

Pour kotlinx.serialization, les propriétés avec des valeurs par défaut sont automatiquement ignorées lors de la sérialisation quand elles égalent la valeur par défaut. Cela signifie que les propriétés nullables typées T? = null sont omises de la sortie sérialisée quand elles sont null.

Flux de travail Android et Kotlin Multiplatform

Les développeurs Android utilisant Retrofit définissent typiquement des méthodes d'interface dont le type de retour est une data class Kotlin. Collez la réponse API, générez une data class avec des annotations Gson ou Moshi et utilisez-la comme type d'appel Retrofit.

Les projets Kotlin Multiplatform Mobile (KMM) partagent des modèles de données entre Android et iOS. Kotlinx.serialization est la bibliothèque recommandée pour KMM car elle a un support multiplateforme. Les data classes @Serializable générées fonctionnent sur toutes les cibles KMM sans modification.

Les projets serveur Ktor utilisent kotlinx.serialization nativement. Le générateur produit des data classes utilisables directement comme types de paramètres de gestionnaires de routes Ktor et corps de réponse.

FAQ

Mes données sont-elles envoyées à un serveur ?

Non. Tout le traitement s'effectue entièrement dans votre navigateur. Votre JSON ne quitte jamais votre appareil.

Quelle bibliothèque de sérialisation choisir ?

Utilisez kotlinx.serialization pour Kotlin Multiplatform et Ktor. Utilisez Gson pour les projets Android legacy. Utilisez Moshi pour les projets Android qui veulent des adaptateurs codegen sans réflexion.

Comment les mots réservés Kotlin sont-ils gérés comme noms de propriétés ?

Les mots réservés Kotlin comme "class", "object", "fun" et "when" sont échappés avec des backticks (ex. `class`) et @SerialName / @Json préserve la clé JSON originale.

Puis-je générer des sealed classes pour les unions discriminées ?

Le générateur de base produit des data classes. La génération de sealed classes pour les patterns d'union discriminée n'est pas automatique mais la sortie data class fournit un solide point de départ.

Les structures profondément imbriquées sont-elles supportées ?

Oui. Chaque objet JSON imbriqué devient sa propre data class. Toutes les classes générées sont émises dans un seul fichier en ordre de dépendance.

Outils similaires