Générez des TypedDict Python à partir d’exemples JSON complets
Inférez des déclarations TypedDict localement, préservez les clés exactes et distinguez les champs absents de None.
Espace de travail de l’outil
JSON vers Python
Déclarations TypedDict pour Python 3.11+ ; bibliothèque standard uniquement.
NotRequired exprime une clé absente ; None exprime null. TypedDict ne valide pas les données à l’exécution. Les lexèmes entiers utilisent int ; les décimaux ou exposants utilisent float, qui peut approximer les nombres.
Activez JavaScript pour générer le code. Vous pouvez lire et modifier le JSON.
Ce navigateur ne peut pas démarrer le Worker local. La génération est indisponible.
Tous les éléments et documents contribuent au même contrat. Un tableau racine reste un tableau. Un champ absent diffère de null.
Jusqu’à 20 documents, 1 000 000 d’unités UTF-16 en entrée et 2 000 000 en sortie ; d’autres budgets de ressources s’appliquent.
Votre JSON est traité localement dans un Worker du navigateur. Il n’est ni envoyé ni enregistré.
Passer à un document conserve uniquement l’exemple actif. Confirmez ou annulez.
Utilisez 1 à 64 lettres et chiffres ASCII, en commençant par une lettre. Les noms réservés sont rejetés.
Prêt à recevoir du JSON.
Certains détails de diagnostic sont omis. Les totaux des avertissements restent visibles.
Détail des noms
Le presse-papiers est indisponible ou son accès est refusé. Téléchargez le fichier ou ouvrez explicitement le code complet pour le copier. Un fichier volumineux peut prendre plus de temps à afficher.
Documents complets et tous les éléments
Collez du JSON strict ou ouvrez un fichier UTF-8 local. Lancez explicitement la génération depuis un document ou jusqu’à vingt exemples complets du même contrat. Tous les éléments et documents contribuent, y compris les propriétés du dernier enregistrement. Un tableau racine reste un tableau. Les exemples vides, clés décodées dupliquées, commentaires, virgules finales et documents concaténés arrêtent la génération en conservant l’entrée.
L’éditeur indique l’exemple actif et le total. Après la génération, consultez le nom du fichier, l’expression du type racine, le nombre de nœuds JSON et la taille du code complet. Ces informations décrivent le résultat actuel ; la copie et le téléchargement incluent tout le fichier même lorsque l’aperçu est limité.
[{"id":1},{"id":2,"nombre":"Ana"}]
from typing import NotRequired, TypeAlias, TypedDict
RootItem = TypedDict("RootItem", {
"id": int,
"nombre": NotRequired[str],
})
Root: TypeAlias = list[RootItem]
Présence, None et clés exactes
NotRequired[T] indique qu’une clé manque dans certains objets de son contexte ; T | None indique un null observé. Pour [{"x":null},{"x":"a"},{}], le champ est NotRequired[str | None]. Un champ obligatoire exclusivement null utilise None ; s’il est facultatif, il utilise NotRequired[None]. L’absence n’ajoute ni None ni valeur par défaut. Les objets de propriétés différentes gardent des contrats distincts.
La syntaxe fonctionnelle de TypedDict préserve les clés comme class, a-b, la chaîne vide, les guillemets, emoji et échappements de substituts isolés ; seuls les identifiants du code sont ajustés en cas de collision. Les dépendances précèdent leur utilisation. Python 3.11+ et sa seule bibliothèque standard suffisent. TypedDict décrit des dictionnaires ordinaires : il ne valide pas JSON et n’impose pas les clés obligatoires à l’exécution. Aucun désérialiseur, dataclass, modèle Pydantic, date ou enum n’est généré.
La racine [1,"x",null] produit list[int | str | None] ; [null] utilise list[None], [] utilise list[object] avec un avis, et {} utilise dict[str, object] faute de champs observés. L’alias d’une racine null utilise types.NoneType. Les racines primitives et unions ont un alias TypeAlias.
Nombres et exportation locale complète
Les lexèmes exclusivement entiers utilisent int, même au-delà de la plage sûre de JavaScript. Un point ou exposant sélectionne float, également en mélangeant entiers et décimaux. L’avis de précision du parser reste visible même si int peut représenter le nombre original ; float signale une perte de précision démontrée par l’évidence numérique. L’entier -0 produit un avis car int normalise son signe. Le code ne contient ni valeurs des exemples ni conversions.
Limites : 20 exemples, 1 000 000 unités UTF-16 d’entrée, 4 000 000 octets UTF-8 cumulés et par fichier, profondeur 200, 100 000 nœuds, 1 000 000 unités d’analyse, 100 000 visites d’inférence, 10 000 types, 20 000 champs, 2 000 000 unités de fusion, 2 000 déclarations et 4 000 000 unités d’émission. La sortie permet 2 000 000 unités UTF-16 et 8 000 000 octets. Les maxima ne peuvent pas nécessairement être atteints ensemble ; l’opération expire après 15 secondes sans code partiel.
L’aperçu contient au plus 20 000 unités UTF-16 ; copie et téléchargement incluent tout le types.py courant, UTF-8 sans BOM, LF et saut final, avec MIME text/plain;charset=utf-8. Au plus 100 détails de diagnostic et 50 lignes de noms totalisant 10 000 unités sont visibles, avec décomptes omis. Le refus du presse-papiers propose une copie manuelle explicite du code complet. Un BOM initial est retiré pour l’analyse ; les positions correspondent au document original visible. Annuler termine le Worker et conserve tous les exemples. Modifier entrée, options, ordre ou mode invalide sortie et exportation.
Le traitement reste dans un Worker local, sans envoi, stockage ni données dans les liens. JavaScript et les Workers sont nécessaires. La page n’importe, ne compile et n’exécute jamais le Python généré.