Sări la conținut
Complet local

JSON la clasă de date Python

Convertiți o mostră JSON în clase Python tipizate — dataclass, Pydantic, TypedDict sau NamedTuple.

Intrare
Ieșire

JSON la clasă de date Python

Lipește JSON sau o matrice și acest instrument deduce automat tipurile și generează clasele Python cu adnotări complete. Alege stilul: @dataclass, Pydantic BaseModel pentru validare, TypedDict pentru cod bazat pe dicționare sau NamedTuple pentru înregistrări imutabile. Obiectele imbricate devin propriile lor clase în ordinea corectă; obiectele cu forme identice reutilizează o clasă în loc să se duplice.

Opțiunile controlează dacă codul este conservator sau modern. „Opțional pentru câmpuri nule” transformă null în tipuri Optional în loc de None inutil; „Adăugați valori implicite” permite omiterea câmpurilor la construirea instanțelor cu reordonare automată. „Pseudonim pentru numele câmpurilor nevalide” gestionează cheile JSON nevalide și păstrează cheia originală prin metadate de câmp sau Pydantic Field(alias=...) pentru serializare corectă. „Utilizați list[T] în loc de List[T]” comută între generici moderni de PEP 585 și typing.List mai vechi, iar adnotările viitoare activează sintaxa X | None / X | Y în întreg codul.

Deducerea distinge șiruri, numere întregi, numere în virgulă mobilă și booleeni, fuzionează conținut mixt de matrice în Union și oferă matricelor rădăcină un nume RootItem cu pseudonim Root = list[RootItem]. Numerele fără punct zecimal sunt citite ca int — nu există modalitate de a recupera „36.0” după analiză. Totul se execută local; JSON-ul și codul Python generat nu părăsesc niciodată dispozitivul tău.

FAQ

Ce stiluri de ieșire sunt acceptate?
Patru: @dataclass (implicit din biblioteca standard), Pydantic BaseModel (pentru validarea și analiza JSON), TypedDict (adnotări de tip peste un dicționar simplu fără clasă runtime) și NamedTuple (înregistrări imutabile asemănătoare tuplurilor).
Cum sunt tratate obiectele imbricate și matricele de obiecte?
Fiecare formă de obiect distinctă devine propria clasă, numită după câmpul care o conține și definită înainte de clasa care o referențiază. Obiectele cu o secțiune identică de câmpuri și tipuri reutilizează o clasă în loc să o dubleze — o matrice de înregistrări cu aceeași formă generează o singură clasă de element.
Ce se întâmplă cu cheile JSON care nu sunt identificatori Python valizi?
Sunt curate la un nume de atribut valid (de exemplu, „first-name” → first_name). Cu „Pseudonim pentru numele câmpurilor nevalide” activat, cheia originală este păstrată printr-un pseudonim nativ (metadate de câmp în dataclass, Field(alias=...) în Pydantic) sau un comentariu final pentru TypedDict și NamedTuple, care nu au un mecanism de pseudonim încorporat.
Poate distinge int și float în mod fiabil?
Clasifică fiecare număr după cum are sau nu o parte fracționară în mostra ta, dar JSON în sine nu distinge int de float pentru numere întregi — o valoare trimisă ca 36.0 este de nedeosebit de 36 după analiză, deci este citită ca int.
JSON-ul meu este încărcat undeva?
Nu. Analiza și generarea de cod se execută integral în browserul tău — JSON-ul pe care-l lipi și Python-ul pe care-l produce nu părăsesc niciodată dispozitivul tău.