Aller au contenu
4all.tools

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.

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é.

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.

    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é.