Outil Tool Kumar
JSON vers des data classes Kotlin
Transformez un exemple JSON en data classes pour kotlinx.serialization. Les objets imbriqués ont leurs propres classes, les tableaux deviennent des valeurs List et les champs renommés conservent leur nom transmis dans le JSON grâce à @SerialName.
Utiliser cet outil
- Collez une réponse représentative, en incluant des enregistrements dont les champs diffèrent.
- Vérifiez la sortie générée et modifiez le nom racine si nécessaire.
- Copiez ou téléchargez le code, puis vérifiez les types par rapport à votre contrat d'API.
Exemple détaillé
Cette sortie provient du convertisseur intégré. Les deux prix des articles donnent un champ à virgule flottante ; les valeurs null et chaîne du champ note donnent un champ nullable.
Entrée
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}Sortie
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
@Serializable
data class Root(
@SerialName("user-id") val userId: Long,
val profile: Profile,
val items: List<Item>,
)
@Serializable
data class Profile(
val city: String,
@SerialName("created_at") val createdAt: String,
)
@Serializable
data class Item(
val price: Double,
val note: String? = null,
)
Décoder une réponse d'API Android
Activez le plugin de compilation pour la sérialisation Kotlin et ajoutez la dépendance JSON de kotlinx.serialization à votre application. Utilisez le type Root généré avec Json.decodeFromString.
ignoreUnknownKeys permet d'accepter de nouveaux champs du serveur sans faire échouer le décodage. Activez cette option uniquement si les règles de votre API autorisent les champs inconnus.
import kotlinx.serialization.json.Json
val json = Json { ignoreUnknownKeys = true }
val model = json.decodeFromString<Root>(responseBody)Options et cas limites
- Le générateur ajoute @Serializable à chaque data class et importe les annotations kotlinx.serialization. Il ne produit ni @Json pour Moshi ni @SerializedName pour Gson.
- Les entiers utilisent Long, les nombres décimaux utilisent Double, et les champs dont les valeurs sont uniquement null ou de types hétérogènes utilisent JsonElement. Les champs nullables ont null pour valeur par défaut.
- Les entiers qui dépassent la plage des entiers signés sur 64 bits deviennent Double, avec un risque de perte de précision. Utilisez des chaînes ou un sérialiseur personnalisé pour conserver des identifiants exacts.
- Les chaînes de date restent de type String. Un seul exemple ne permet pas de déterminer si un champ est obligatoire dans chaque réponse d'API.
Privé par défaut
Votre document reste dans ce navigateur. Tool Kumar analyse, convertit et crée les téléchargements sur votre appareil, sans compte ni étape d'envoi au serveur.
JSON vers des data classes Kotlin : questions fréquentes
- Quelle bibliothèque de sérialisation Kotlin est utilisée ?
- kotlinx.serialization. La sortie utilise @Serializable et ajoute @SerialName lorsqu'une propriété Kotlin diffère de sa clé JSON.
- Puis-je utiliser le résultat avec Moshi ?
- Les types des champs peuvent servir de base à votre modèle, mais les annotations ciblent kotlinx.serialization. Remplacez-les et configurez la génération de code Moshi si votre application Android utilise Moshi.
- Comment les champs absents et les valeurs null sont-ils traités ?
- Les champs absents de certains enregistrements du tableau ou observés avec la valeur null deviennent nullables et ont null pour valeur par défaut. Les champs obligatoires non nullables n'ont pas de valeur par défaut.
- Le générateur crée-t-il des DTO Kotlin pour Android ?
- Oui. Il crée des data classes adaptées à un usage comme DTO. Configurez le plugin de compilation pour la sérialisation Kotlin et la bibliothèque d'exécution JSON dans votre projet.