Skip to content
jsonforge.app

JSON to Python

Générez des classes TypedDict Python depuis un échantillon JSON, pour mypy, Pyright et la complétion de l'éditeur.

Entrée JSON

Loading editor…

Code généré

Saisissez du JSON à gauche pour générer un type à partir de celui-ci.

Qu'est-ce que JSON to Python ?

Un convertisseur JSON vers Python transforme un document JSON d'échantillon en définitions de classes Python typées — ici, des classes TypedDict qui décrivent la forme exacte d'un dictionnaire analysé par json.loads. Python vous rendra volontiers un simple dict pour toute charge utile JSON, ce qui est pratique jusqu'au moment où vous devez savoir ce qu'il contient réellement : à ce point, chaque accès de clé est une supposition, les fautes de frappe ne surgissent qu'à l'exécution, et votre éditeur ne peut offrir aucune complétion. Déclarer la forme en TypedDict donne à mypy, Pyright et votre IDE assez d'informations pour compléter les clés automatiquement, attraper les mauvaises orthographes avant l'exécution, et signaler quand un champ est utilisé avec le mauvais type — tandis que la valeur reste un dict ordinaire à l'exécution, donc rien de votre façon d'analyser ou de transmettre les données n'a à changer.

Comment utiliser JSON to Python

  1. Collez une charge utile JSON représentative dans le panneau de gauche — les classes générées reflètent exactement les clés présentes dans cet échantillon.
  2. Définissez un nom de classe racine au-dessus de la sortie (par défaut « Root ») ; chaque objet imbriqué devient sa propre classe, nommée d'après la clé qui le contient.
  3. Copiez les classes dans un module et annotez votre code d'analyse, par exemple `data: Root = json.loads(raw)`.
  4. Utilisez le sélecteur de langue au-dessus de la sortie pour générer la même forme en struct Go, struct Rust ou type TypeScript à la place.

Exemples

Objet plat en TypedDict

Entrée

{"id": 1, "name": "Ada", "active": true}

Sortie

from typing import TypedDict class Root(TypedDict): id: int name: str active: bool

Un objet imbriqué devient sa propre classe

Entrée

{"user": {"id": 1, "name": "Ada", "roles": ["admin"]}}

Sortie

from typing import TypedDict class User(TypedDict): id: int name: str roles: list[str] class Root(TypedDict): user: User

Erreurs courantes

  • Supposer qu'un TypedDict rejette les mauvaises données à l'exécution — il ne le fait pas, donc une API qui change de forme vous remettra quand même un dict faux sans aucune erreur jusqu'à ce que quelque chose en aval casse.
  • Copier la syntaxe `list[str]` dans un projet tournant sous Python 3.8 ou plus ancien, où elle lève une TypeError à l'import sauf si `from __future__ import annotations` est présent.
  • Générer depuis un échantillon où des clés optionnelles sont par hasard absentes, produisant une classe qui ne marque rien comme NotRequired et donne une fausse confiance sur ce que la charge utile contient toujours.

Pourquoi utiliser cet outil

  • Donne aux éditeurs et à mypy/Pyright une vraie complétion de clés et une détection de fautes de frappe sur des données qui seraient autrement un dict opaque.
  • N'ajoute aucun surcoût ni dépendance à l'exécution — la valeur analysée reste un simple dict, donc le code d'analyse existant est inchangé.
  • Fonctionne entièrement côté client, donc une charge utile copiée d'un service Django ou FastAPI reste locale pendant la génération de ces TypedDicts.

Questions fréquentes