Ugrás a tartalomhoz
100% helyi

JSON Python dataclass

Konvertálja a JSON mintát begépelt Python osztályokká — dataclass, Pydantic, TypedDict vagy NamedTuple.

Bemenet
Kimenet

JSON Python dataclass

Illesszen be JSON objektumot vagy tömböt, és ez az eszköz automatikusan meghatározza a típusokat és létrehozza Python osztályokat teljes annotációval. Válassza ki a stílust: @dataclass, Pydantic BaseModel validáláshoz és kérés-válasz kezeléshez, TypedDict meglévő szótárkódhoz vagy NamedTuple módosíthatatlan rekordokhoz. Beágyazott objektumok saját osztályokká válnak megfelelő sorrendben; azonos alakú objektumok egy közös osztályt újrahasznosítanak a duplikálás helyett.

A beállítások azt szabályozzák, hogy a kód konzervatív vagy modern-e. „Optional null mezőkhöz” null értékeket Optional típussá alakít bare None helyett az API-válaszok és adatbázis-kezeléséhez; „Alapértelmezett értékek hozzáadása” lehetővé teszi mezők kihagyását az automatikus átcsoportosítással és rendezéssel. „Alias érvénytelen mezőnevekhez” kezeli a nem érvényes JSON-kulcsokat és megőrzi az eredeti kulcsot a dataclass metaadatain vagy Pydantic Field(alias=...) segítségével a helyes szerializáláshoz. „Az list[T] helyett List[T]” modern PEP 585 generikusok és régebbi typing.List között vált, míg __future__ anotáció X | None / X | Y szintaxist engedélyez az egész kódon keresztül az összes típusdeklarációban.

A típuskikövetkeztetés megkülönböztet karakterláncokat, egész számokat, lebegőpontos számokat és logikai értékeket, kevert tömbsödörkódot Union típusba egyesíti, és gyökérobjektum-tömbhöz RootItem osztálynevet ad Root = list[RootItem] aliassal. Decimális pont nélküli számok mindig int-ként olvasódnak — „36.0” nem helyreállítható az elemzés után egyáltalán. Minden helyileg fut böngészőjében; JSON és Python kód soha nem hagyja el eszközét.

Gyakori kérdések

Mely kimeneti stílusok támogatottak?
Négy: @dataclass (standard könyvtár stílus), Pydantic BaseModel (validáláshoz és JSON-elemzéshez), TypedDict (típusannotációk egyszerű szótár felett futtatási idejű osztály nélkül) és NamedTuple (módosíthatatlan rekordok, hasonlóan tuple-hez).
Hogyan kezelik a beágyazott objektumokat és objektumtömböket?
Minden különálló objektumalak saját osztállyá válik, amelynek neve az azt tartalmazó mező után járul, és az azt referenciáló osztály előtt van definiálva. Az azonos mező- és típuskészlettel rendelkező objektumok egy osztályt újrahasznosítanak az ismétlődés helyett — az azonos alakú rekordok tömbje egyetlen elemklaszt generál.
Mi történik a JSON-kulcsokkal, amelyek nem érvényes Python-azonosítók?
Érvényes attribútumnévvé tisztításra kerülnek (például „first-name” → first_name). Az „Alias érvénytelen mezőnevekhez” opcióval az eredeti kulcs natív aliason (dataclass mezőmetaadatai, Pydantic Field(alias=...)) vagy végkommenteren keresztül marad meg a TypedDict és NamedTuple számára, amelyeknek nincs beépített aliasmechanizmusa.
Meg tudja bízhatóan különböztetni az int és float között?
Az egyes számokat az Ön mintájában a törtterület alapján osztályozza, de a JSON maga nem különböztet meg int és float közötti egész számokat — egy 36.0 värékként elküldött érték az elemzés után megkülönböztethetetlen 36-tól, ezért int-ként olvasódik.
Az én JSON-om fel van töltve valahova?
Nem. Az elemzés és kódgenerálás teljes egészében az Ön böngészőjében történik — a beillesztett JSON és a generált Python soha nem hagyja el az Ön eszközét.