Skip to content

Convertisseur JSON vers classe Python

Collez du JSON, obtenez des classes Python : dataclass, Pydantic v2 ou TypedDict. Typage Optional correct, alias camelCase. 100 % dans le navigateur, gratuit.

Sans pistage Fonctionne dans le navigateur Gratuit
Sortie
0 car.
Sortie Python
0 lignes
Sortie vérifiée par rapport à la syntaxe Python 3.12+ et à la sémantique de Pydantic v2 sur des charges utiles d'API réelles. — Go Tools Team · 3 juil. 2026

Qu'est-ce que la conversion JSON vers Python ?

La conversion JSON vers Python transforme un échantillon JSON en classes Python prêtes à l'emploi — un dataclass de la bibliothèque standard, un modèle Pydantic v2 ou un TypedDict — pour ne plus jamais écrire à la main les définitions de champs d'une réponse d'API ou d'un fichier de configuration. Ce générateur de classe Python déduit les types corrects (int, float, str, bool, Optional), transforme les objets imbriqués en classes nommées et ajoute des alias Pydantic pour les clés camelCase, le tout à 100 % dans votre navigateur.

Exemples

Réponse d'API → dataclass

{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]}
from dataclasses import dataclass
from typing import List


@dataclass
class Root:
    id: int
    name: str
    email: str
    active: bool
    roles: List[str]

Une charge utile REST typique devient un @dataclass prêt à l'emploi. Les nombres entiers sont déduits en int, les décimaux en float, et les tableaux deviennent List[str].

Objet imbriqué (classe enfant en premier)

{"repo":"pydantic","owner":{"login":"samuelcolvin","id":100}}
from dataclasses import dataclass


@dataclass
class Owner:
    login: str
    id: int


@dataclass
class Root:
    repo: str
    owner: Owner

Les objets imbriqués deviennent des classes distinctes et nommées. La classe enfant (Owner) est émise avant la classe parente, pour que le code s'exécute sans from __future__ import annotations.

camelCase → alias Pydantic v2

{"login":"octocat","publicRepos":15,"createdAt":"2011-01-25"}
from pydantic import BaseModel, ConfigDict, Field


class Root(BaseModel):
    model_config = ConfigDict(populate_by_name=True)

    login: str
    public_repos: int = Field(alias="publicRepos")
    created_at: str = Field(alias="createdAt")

En mode Pydantic, les champs sont en snake_case avec Field(alias=...) renvoyant vers la clé JSON d'origine, et populate_by_name vous laisse construire le modèle des deux façons — la validation fait ainsi l'aller-retour sur de vraies données d'API.

Tableau d'objets → TypedDict (clé optionnelle)

{"users":[{"id":1,"nick":"x"},{"id":2}]}
from typing import List, Optional, TypedDict


class User(TypedDict):
    id: int
    nick: Optional[str]


class Root(TypedDict):
    users: List[User]

Les tableaux d'objets fusionnent en un seul type d'élément. Une clé absente de certains éléments (nick) devient Optional. TypedDict décrit la forme d'un dict simple sans aucun coût à l'exécution.

Comment convertir du JSON en Python

  1. 1

    Collez votre JSON

    Déposez un objet JSON, un tableau ou une réponse d'API dans le champ de saisie. La conversion démarre instantanément.

  2. 2

    Choisissez dataclass, Pydantic ou TypedDict

    Basculez le style de sortie pour l'adapter à votre projet, et renommez la classe racine depuis le Root par défaut.

  3. 3

    Copiez ou téléchargez

    Récupérez le Python généré en un clic et collez-le directement dans votre code.

Common Use Cases

Clients d'API typés
Transformez un exemple de réponse REST ou GraphQL en modèles Pydantic ou en dataclass pour un client requests ou httpx, sans écrire à la main les définitions de champs.
Analyse de configs et de fixtures
Générez des modèles pour les fichiers de configuration JSON, les fixtures de test ou les charges utiles de webhooks que vous devez charger et valider.
Prototypage rapide et annotations de types
Collez une charge utile inconnue pour voir instantanément sa forme sous forme de types Python — un moyen rapide d'explorer une nouvelle API ou d'ajouter des annotations TypedDict à du code existant basé sur des dict.

Comment fonctionne la conversion

Inférence structurelle
Chaque objet devient une classe nommée ; les formes identiques sont dédupliquées pour obtenir une seule classe, pas des copies. Les tableaux d'objets sont fusionnés clé par clé, et les clés absentes de certains éléments deviennent Optional.
Trois cibles idiomatiques
dataclass conserve zéro dépendance et préserve les clés valides pour Root(**data) ; Pydantic v2 ajoute des alias Field et populate_by_name pour une vraie validation ; TypedDict décrit un dict simple pour les vérificateurs de types statiques, en utilisant la syntaxe fonctionnelle quand une clé n'est pas un identifiant.
Typage correct et léger en dépendances
Les nombres entiers correspondent à int (précision arbitraire, sans dépassement), les décimaux et les exposants à float, et les champs uniquement null à Optional[Any]. Les imports de typing (Optional, List, Any) ne sont ajoutés que lorsqu'ils sont réellement utilisés.
100 % côté navigateur
L'analyse et la génération s'exécutent dans votre navigateur sans aucun appel réseau, vos données restent donc privées.

Conseils pour des modèles Python propres

Adaptez le mode à la tâche
Utilisez dataclass pour les conteneurs de données internes, Pydantic v2 quand vous validez ou analysez une entrée non fiable, et TypedDict quand vous n'avez besoin que d'annotations de types statiques sur des dict existants.
Collez un échantillon représentatif
Les champs ne sont marqués Optional que lorsqu'un échantillon les omet, et les valeurs uniquement null retombent sur Any. Un exemple complet et renseigné produit les types les plus précis.
Nommez votre classe racine
Donnez un nom racine parlant (User, ApiResponse) au lieu du Root par défaut, pour un code lisible et importable.

Questions fréquentes

Comment convertir du JSON en classe Python ?
Collez votre JSON dans le champ de saisie. Le convertisseur l'analyse instantanément dans votre navigateur et génère le Python à droite. Choisissez dataclass, Pydantic v2 ou TypedDict avec le sélecteur, puis cliquez sur Copier — sans envoi, sans compte, sans attente.
Quelle est la différence entre les sorties dataclass, Pydantic et TypedDict ?
dataclass vous donne un @dataclass de la bibliothèque standard, sans dépendances — parfait pour de simples conteneurs de données. Pydantic v2 émet des classes BaseModel qui valident et convertissent les données à l'exécution, idéal pour analyser des réponses d'API non fiables. TypedDict décrit la forme d'un dict simple pour les vérificateurs de types statiques (mypy, Pyright), sans coût à l'exécution. Changez de mode pour comparer le même JSON dans chacun.
Comment générer un modèle Pydantic depuis du JSON ?
Choisissez l'onglet Pydantic v2. Les champs sont convertis en snake_case avec Field(alias="originalKey") pour que le modèle lise toujours le JSON en camelCase, et model_config = ConfigDict(populate_by_name=True) vous laisse aussi le construire par nom de champ. Analysez une charge utile avec Root.model_validate(data) — Pydantic valide les types et lève une erreur claire en cas d'entrée invalide.
Comment la sortie dataclass gère-t-elle les clés camelCase ?
Un dataclass n'a pas d'alias intégré ; donc, pour que Root(**data) continue de fonctionner, le mode dataclass conserve la clé d'origine comme nom de champ quand il s'agit d'un identifiant Python valide (publicRepos reste publicRepos). Si vous voulez du snake_case idiomatique avec des alias, utilisez plutôt le mode Pydantic v2, qui renvoie les champs snake_case vers la clé JSON exacte.
Comment les champs optionnels et null sont-ils typés ?
Lorsqu'une clé apparaît dans certains éléments d'un tableau mais pas dans d'autres, son type est enveloppé dans Optional. Un champ toujours null devient Optional[Any], car un null JSON seul ne porte aucun type. Collez un échantillon représentatif avec une valeur renseignée pour obtenir un type plus précis que Any.
À quel type Python correspond chaque valeur JSON ?
Les chaînes correspondent à str, les booléens à bool, les nombres entiers à int, et tout nombre avec une virgule décimale ou un exposant à float. Comme les entiers Python ont une précision arbitraire, même les identifiants énormes restent en int — il n'y a pas de dépassement 64 bits. Les tableaux vides ou de types mixtes deviennent List[Any], et les objets deviennent des classes imbriquées.
Gère-t-il les objets imbriqués et les tableaux d'objets ?
Oui. Chaque objet imbriqué devient sa propre classe nommée, et les formes identiques sont dédupliquées en une seule classe réutilisée par chaque champ. Les tableaux d'objets sont fusionnés clé par clé pour obtenir une seule classe d'élément, les clés absentes de certains éléments étant marquées Optional. Les classes enfants sont toujours émises avant les classes qui les utilisent.
Comment les mots-clés Python et les clés non identifiantes sont-ils gérés ?
Une clé JSON qui est un mot-clé Python (class, from, import) reçoit un underscore final (class_). Les clés avec des tirets, des espaces ou un chiffre initial sont assainies en identifiants valides dans les modes dataclass et Pydantic. En mode TypedDict, tout dict contenant une clé non identifiante est émis avec la syntaxe fonctionnelle TypedDict('Name', {...}) afin de préserver la clé exacte comme "first-name".
Comment utiliser le dataclass généré pour analyser du JSON ?
Pour un objet plat, json.loads puis Root(**data) fonctionne directement. Pour les structures imbriquées, dataclass ne descend pas automatiquement dans l'arbre — construisez vous-même les objets enfants, utilisez une bibliothèque comme dacite ou pydantic.dataclasses, ou basculez cet outil en mode Pydantic v2, où Root.model_validate(json.loads(text)) analyse tout l'arbre en un seul appel.
Mes données JSON sont-elles privées et sécurisées ?
Oui. La conversion s'exécute à 100 % dans votre navigateur en JavaScript. Votre JSON — y compris les jetons, identifiants ou données client — ne quitte jamais la page et n'est jamais envoyé à un serveur.
L'outil est-il gratuit ? Faut-il un compte ?
Il est entièrement gratuit, sans inscription, sans limites et sans publicités encombrant l'espace de travail. Il fonctionne hors ligne une fois la page chargée.