JSON till Python dataclass
Konvertera ett JSON-exempel till typkontrollerade Python-klasser — dataclass, Pydantic, TypedDict eller NamedTuple.
JSON till Python dataclass
Klistra in ett JSON-objekt eller -array och det här verktyget härleder automatiskt en typ för varje fält och genererar motsvarande Python-klasser med fullständiga typannoteringar. Välj utdatastil som passar din kodbas: enkel @dataclass, en Pydantic BaseModel för validering av förfrågningar och svar, en TypedDict för typning av befintlig ordbok-baserad kod, eller en NamedTuple för lätta oföränderliga poster. Kapslade objekt blir sina egna klasser, definierade i rätt ordning så filen fungerar omedelbar; identiskt formade objekt — som varje objekt i en array av poster — återanvänder en enda klass istället för att generera en kopia för var och en.
Alternativen styr hur konservativ eller modern den genererade koden är. ”Valfritt för null-fält” gör ett fält som var null i ditt exempel till en Optional-typ (eller Any) istället för den värdelösa bare None; ”Lägg till standardvärden” kompletterar det med ”= None” så fältet kan utelämnas när du skapar en instans, och obligatoriska fält ordnas automatiskt före fält med standardvärden där Python kräver det. ”Alias för ogiltiga fältnamn” hanterar JSON-nycklar som inte är giltiga Python-identifierare — en bindestreck-nyckel som ”first-name” blir attributet first_name, kopplad tillbaka till den ursprungliga nyckeln genom fältmetadata i dataclass eller Field(alias=...) i Pydantic så serialisering fortsätter att fungera. ”Använd list[T] istället för List[T]” växlar mellan moderna PEP 585 inbyggda generiska typer och äldre typing.List-stil som vissa kodbaser fortfarande behöver, och __future__-importväxeln byter Optional[X]/Union[X, Y] till den nyare X | None / X | Y-syntaxen genomgående.
Typinferens skiljer mellan strängar, heltal, flyttal och booleska värden, slår samman blandat array-innehål till en enda Union-typ, och ger ett root-array av objekt ett rimligt RootItem-klassnamn med ett Root = list[RootItem]-alias nedan. Eftersom ett JSON-tal inte bär sin egen int/float-markering läses ett tal utan decimalpunkt alltid som int — det finns inget sätt att återställa ett avsiktligt ”36.0” efter parsning.
Allt körs lokalt i din webbläsare: den JSON du klistrar in — ofta ett verkligt API-svar eller databaspost — parsas och konverteras utan att skickas någonstans. Kopiera den genererade Python, ladda ned den som .txt-fil, eller skicka utdata tillbaka till indata för att fortsätta förbättra det.