Convertisseur Python vers JSON
Collez des dicts, dataclasses ou modèles Pydantic. Récupérez du JSON propre.
Ce que fait cet outil
Si vous avez déjà dû transformer un dict Python ou une dataclass en payload JSON pour un appel d'API, une fixture de test ou un bout de documentation, vous savez que ça devient pénible très vite — il faut inverser les guillemets, True/False deviennent true/false, None devient null, et les valeurs datetime/Decimal doivent être sérialisées à la main. Collez le Python ici et récupérez du JSON valide, exactement ce que json.dumps ou un appel Pydantic .model_dump_json() produirait — sans avoir à écrire la plomberie.
Ce n'est pas un simple remplacement de chaîne. Le convertisseur comprend ce que Python fait vraiment au moment de la sérialisation : les chaînes à guillemets simples passent en guillemets doubles, les tuple deviennent des tableaux JSON, set et frozenset aussi, les valeurs datetime et date sortent en chaînes ISO-8601 conformément à la RFC 8259, Decimal devient un nombre, et les membres d'Enum émettent leur .value. Les objets imbriqués sont développés sur place, donc une dataclass contenant une liste d'autres dataclasses passe proprement.
Les modèles Pydantic (v1 et v2) sont pris en charge. Les alias de champs définis via Field(alias=...) renomment les clés dans la sortie, les champs Optional qui valent None sont conservés comme null, et les types Literal/Union sortent avec leur valeur d'exécution. Collez un module entier avec plusieurs classes si vous voulez — chacune ressort comme une entrée de premier niveau.
Comment l'utiliser
Trois étapes. Ça marche pareil que vous colliez un dict de deux lignes ou un module de 300 lignes.
Collez votre Python (ou essayez l'exemple)
Déposez votre Python tel quel dans l'éditeur de gauche. Un dict literal, une dataclass definition plus instance, un Pydantic model ou multiple classes with nested types — tout passe. Cliquez sur Load Sample pour voir à quoi ressemble une entrée réaliste.
Pas besoin de virer les imports ou les décorateurs. Laissez le formatage PEP 8, les annotations de type et la syntaxe dataclass tranquilles.
Cliquez sur Convert
Cliquez sur le bouton vert Convert. L'outil lit le Python, construit le graphe d'objets et le sérialise comme le ferait json.dumps — avec indentation pour la lisibilité. Un petit indicateur de chargement s'affiche pendant le traitement.
Copiez le JSON
Le panneau de droite se remplit de JSON joliment formaté, valide selon la spécification JSON. Copiez-le dans votre corps de requête, votre fixture pytest, votre exemple OpenAPI FastAPI ou votre fichier de configuration.
Quand ça sert vraiment
Fixtures de requêtes API
Vous avez un modèle de requête Pydantic et il vous faut un corps JSON d'exemple pour Postman, curl ou un exemple Swagger. Collez le modèle, récupérez le JSON, voilà.
Données de tests pytest et unitaires
Convertissez une instance de dataclass de votre fichier de test en fichier JSON de seed pour des tests d'intégration ou des comparaisons de snapshots — sans encodeur personnalisé.
Squelette de fichier de configuration
Une dataclass de paramètres avec quelques dizaines de champs devient un template JSON prêt à éditer, et vous n'avez plus à taper des accolades à la main pour la dixième fois.
Garder la doc alignée avec le code
Générez des exemples JSON pour un README ou une référence d'API directement depuis les modèles que vous avez déjà, pour que la doc ne dérive jamais du code.
Questions fréquentes
Ça marche avec Pydantic v1 et v2 ?
Oui. Les deux sont pris en charge, y compris Field(alias=...), model_config, Field(default_factory=...) et les modèles imbriqués. Les alias renomment les clés dans la sortie, comme le ferait Pydantic lui-même.
Comment sont gérés datetime, Decimal et UUID ?
datetime, date et time sortent en chaînes ISO-8601. Decimal devient un nombre JSON (sans guillemets). UUID sort en chaîne hexadécimale standard. bytes est encodé en base64. Ça correspond aux conventions du module json de Python quand on branche un encodeur personnalisé.
Et pour Enum, Literal et Optional ?
Les membres d'Enum émettent leur .value. Literal["a", "b"] émet la chaîne d'exécution. Les champs Optional[X] qui valent None passent en null JSON plutôt que d'être supprimés — la forme de votre sortie reste fidèle aux annotations de type.
Je peux coller un module entier avec plusieurs classes ?
Oui. Chaque classe de premier niveau ayant une instance dans le module ressort comme une entrée séparée dans le JSON. Les dataclasses et modèles Pydantic imbriqués sont développés sur place, et les champs hérités des classes parentes sont inclus.
Mon code est-il stocké quelque part ?
Le code est envoyé au backend uniquement pour être converti. On ne le log pas et on ne le conserve pas. Comme avec n'importe quel outil en ligne, si ce que vous collez est vraiment sensible, relisez-le d'abord.
Et si le Python a quelque chose d'exotique — lambdas, générateurs, handles de fichiers ?
Les valeurs non sérialisables (fonctions, générateurs, sockets ouverts) sortent en null plutôt que de tout casser. Si le source a une erreur de syntaxe, corrigez les évidentes d'abord — le parseur tolère les particularités de style mais ne peut pas faire tourner du code cassé.
Autres outils qui pourraient vous servir
Python vers JSON n'est qu'une pièce du puzzle. Voici les outils qui s'y marient bien :