Preskočiť na obsah
100% lokálne

JSON na Python dataclass

Premeňte JSON vzorku na typované Python triedy — dataclass, Pydantic, TypedDict alebo NamedTuple.

Vstup
Výstup

JSON na Python dataclass

Vložte JSON objekt alebo pole a tento nástroj automaticky určí typy a vygeneruje Python triedy s úplnými anotáciami. Vyberte štýl výstupu: @dataclass, Pydantic BaseModel na validáciu, TypedDict na typovanie existujúceho kódu alebo NamedTuple pre nemenné záznamy. Vnorené objekty sa stanú vlastnými triedami v správnom poradí; objekty s identickým tvarom znovu využívajú jednu triedu namiesto duplikácie.

Možnosti ovládajú, či je kód konzervatívny alebo moderný. „Optional pre null polia“ zmení null hodnoty na Optional typy namiesto holého None; „Pridať predvolené hodnoty“ umožňuje vynechať polia pri vytváraní inštancií s automatickým preusporiadaním povinných polí. „Alias pre neplatné názvy polí“ sanuje JSON kľúče, ktoré nie sú platnými identifikátormi, a zachováva pôvodný kľúč cez metaúdaje poľa alebo Pydantic Field(alias=...) na správnu serializáciu. „Použiť list[T] namiesto List[T]“ prepína medzi modernými PEP 585 generikmi a starším typing.List, zatiaľ čo budúce anotácie umožňujú X | None / X | Y syntax v celom kóde.

Určovanie typu rozlišuje reťazce, celé čísla, desatinné čísla a booleovské hodnoty, zjednocuje zmiešaný obsah polí do Union typov a dáva root poľom RootItem triedy s Root = list[RootItem] aliasem. Celé čísla bez desatinného bodu sa čítajú ako int — nie je možné obnoviť desatinné „36.0“ po spracovaní. Všetko beží lokálne; váš JSON a generovaný Python nikdy neopustia vaše zariadenie.

Časté otázky

Ktoré štýly výstupu sú podporované?
Štyri: @dataclass (štandardný štýl knižnice), Pydantic BaseModel (na validáciu a spracovanie JSON), TypedDict (anotácie typov nad holým slovníkom bez runtime triedy) a NamedTuple (nemenné záznamy podobné tuple).
Ako sa spracovávajú vnorené objekty a polia objektov?
Každý odlišný tvar objektu sa stane vlastnou triedou, pomenovanou podľa poľa, ktoré ho obsahuje a definovanej pred triedou, ktorá naň odkazuje. Objekty s identickým súborom polí a typov znovu používajú jednu triedu namiesto vytvorenia duplicity — pole záznamov s rovnakým tvarom generuje jednu triedu položky.
Čo sa stane s JSON kľúčmi, ktoré nie sú platnými identifikátormi Python?
Sú očistené na platný názov atribútu (napr. „first-name“ → first_name). Keď je zapnutá možnosť „Alias pre neplatné názvy polí“, pôvodný kľúč je zachovaný prostredníctvom natívneho aliasu (metaúdaje poľa v dataclass, Field(alias=...) v Pydantic) alebo komentáru na konci pre TypedDict a NamedTuple, ktoré nemajú vstavaný mechanizmus aliasu.
Môže to spoľahlivo rozlíšiť int a float?
Klasifikuje každé číslo na základe toho, či má zlomkovú časť vo vašej vzorke, ale JSON sám nerozlišuje int od float pre celé čísla — hodnota poslaná ako 36.0 je nerozlíšiteľná od 36 po spracovaní, takže sa čita ako int.
Je môj JSON niekde nahraný?
Nie. Spracovanie a generovanie kódu prebiehajú výlučne vo vašom prehliadači — JSON, ktorý vložíte, a Python, ktorý vyprodukuje, nikdy neopustia vaše zariadenie.