JSON vers types
Transformez un exemple JSON en interfaces TypeScript, structs Go, modèles Python, classes C#, structs Rust ou en JSON Schema.
JSON vers types - TypeScript, Go, Python, C#, Rust et JSON Schema
Collez un exemple JSON, par exemple la réponse d'une API, et obtenez les définitions de types qui vont avec : interfaces TypeScript, structs Go avec tags JSON, modèles Pydantic ou dataclasses, classes C#, structs Rust pour serde, ou un JSON Schema. Les objets imbriqués deviennent des types nommés à part entière, si bien que le résultat se lit comme du code écrit à la main.
Les réponses d'API contiennent souvent de vraies données clients, des jetons et des identifiants internes. La conversion s'exécute entièrement dans votre navigateur : rien de tout cela n'est envoyé nulle part.
Mode d'emploi
- Collez du JSON dans la zone de gauche, ou cliquez sur Exemple pour voir une démonstration.
- Choisissez le langage de Sortie.
- Indiquez le Nom racine du type de premier niveau ; pour TypeScript, choisissez
interfaceoutype. - Copiez le résultat dans votre projet.
Comment les types sont déduits
- Nombres : ils deviennent des entiers quand toutes les valeurs sont entières, des flottants sinon ;
42et18.5dans le même champ donnent un flottant. - Tableaux d'objets : ils sont fusionnés, et chaque clé vue dans n'importe quel élément apparaît dans le type.
- Champs optionnels : avec Rendre optionnelles les clés absentes activé, une clé absente de certains éléments devient optionnelle (
coupon?: string,omitempty,Option,= None). - Champs nullables : une valeur
nulldans un seul élément rend le champ nullable, par exemplestring | null, ou*stringen Go. - Types mélangés, comme un nombre dans un élément et une chaîne dans un autre : ils donnent
unknown,Anyouinterface{}, pour que vous tranchiez à la main. - Noms : ils viennent des clés.
addressdonneAddress, et les éléments deordersdonnentOrder. Les objets de même forme partagent un seul type.
Langage par langage
| Sortie | Ce que vous obtenez |
|---|---|
| TypeScript | export interface ou export type ; les clés qui ne sont pas des noms valides sont mises entre guillemets |
| Go | Des structs exportées avec tags json, int64 et float64, et les sigles courants comme ID et URL |
| Python (Pydantic) | Des classes BaseModel ; des champs en snake_case avec Field(alias=...) quand la clé JSON diffère |
| Python (dataclass) | Des classes @dataclass, avec les champs optionnels placés en dernier comme l'exigent les dataclasses |
| C# | Des classes avec [JsonPropertyName] pour System.Text.Json, long, double et List<T> |
| Rust | Des structs qui dérivent Serialize et Deserialize, avec #[serde(rename)] si nécessaire |
| JSON Schema | Un schéma draft 2020-12 avec des listes required, prêt pour les validateurs |
Obtenir les types les plus exacts
Un type n'est jamais plus complet que l'exemple dont il vient. Utilisez une réponse qui contient chaque champ optionnel au moins une fois, et collez un tableau avec plusieurs éléments différents plutôt qu'un seul, pour que la fusion voie quels champs varient. Les dates arrivent en JSON sous forme de chaînes et restent des chaînes ; convertissez-les dans votre code là où il vous faut de vrais types date.
Outils liés
Pour mettre en forme ou valider le JSON d'abord, utilisez le formateur JSON. Pour le transformer en YAML, CSV ou XML, utilisez le convertisseur JSON. Les pages dédiées ouvrent cet outil avec un langage déjà choisi : JSON vers TypeScript, JSON vers Go, JSON vers Python, JSON vers C# et générateur de JSON Schema.