JSON en classes Python

Collez du JSON et obtenez des dataclasses Python, des modèles Pydantic ou des définitions TypedDict avec toutes les annotations de type. Les champs optionnels valent None par défaut et les clés sont converties en snake_case.

Gratuit et privé. Tout se passe dans votre navigateur, rien n'est envoyé.

Comment ça marche

  1. Collez votre JSONCollez une réponse de votre API ou ouvrez un fichier .json. Cliquez sur Exemple pour voir un cas concret.
  2. Réglez les optionsIndiquez le nom du type principal et les options de ce langage. Le code se met à jour pendant que vous tapez.
  3. Copiez ou téléchargezCopiez le code dans votre projet ou téléchargez-le sous forme de fichier.

Trois styles pour trois usages

Les dataclasses font partie de la bibliothèque standard et conviennent bien aux données internes. Les modèles Pydantic valident et convertissent les données au chargement, et le générateur ajoute Field(alias=...) dès que le nom Python diffère de la clé JSON, pour que model_validate lise les données d'origine. TypedDict décrit seulement la forme d'un dictionnaire, ce qui est pratique quand vous continuez à travailler avec le résultat de json.loads ; les clés qui ne sont pas des noms Python valides utilisent la syntaxe fonctionnelle de TypedDict.

Les champs optionnels sont placés à la fin de chaque dataclass, car Python exige que les champs avec valeur par défaut viennent après les autres. Les types utilisent la forme moderne list[...], le code demande donc Python 3.9 ou plus récent ; NotRequired dans TypedDict demande Python 3.11 ou typing_extensions.

Questions fréquentes

Pourquoi le code commence-t-il par from __future__ import annotations ?

Cette ligne permet aux classes de se référencer entre elles dans n'importe quel ordre et garde les annotations telles qu'elles sont écrites. Elle ne pose aucun problème avec les dataclasses et Pydantic 2.

Mon JSON est-il envoyé quelque part ?

Non. Les types sont générés dans votre navigateur. Les réponses d'API qui contiennent des données clients ou des clés ne quittent jamais votre appareil.

Comment les champs optionnels sont-ils détectés ?

Si le JSON contient une liste d'objets, chaque objet est comparé aux autres. Un champ absent d'au moins un objet est marqué optionnel. Avec un seul objet, tous les champs sont considérés comme obligatoires.

Que se passe-t-il avec les champs toujours null ?

Leur type ne peut pas être connu à partir de l'exemple, ils reçoivent donc un type général comme unknown, object, Any ou JsonElement. Ajoutez un exemple où le champ a une valeur pour obtenir un type précis.

Pourquoi mon 1.0 est-il typé comme un nombre décimal ?

L'outil regarde comment le nombre est écrit. 1.0 ou 2.5 deviennent double ou float, 1 devient un entier. Si un champ est entier dans certains éléments et décimal dans d'autres, c'est le type décimal qui est utilisé.

Puis-je utiliser le résultat dans du code en production ?

Oui, le code compile tel quel dans les configurations habituelles. Relisez les noms et les types avant de le valider, car un exemple ne montre jamais toutes les valeurs possibles.

Est-ce que ça fonctionne hors ligne ?

Oui. Après une première visite de la page, l'outil continue de fonctionner sans connexion internet.