UTILS.
100% w przeglądarce
🐍

JSON na model Pydantic

Zamień przykład JSON w klasy modelu Python Pydantic v2, z przełącznikami dla wyjścia @dataclass lub TypedDict oraz aliasowaniem pól snake_case.

wynik

O tym narzędziu

Narzędzie JSON na model Pydantic konwertuje wklejony przykład JSON w klasy modelu Python. Programiści Pythona i FastAPI nieustannie tworzą modele Pydantic z przykładowych odpowiedzi API, a ten konwerter robi to natychmiast w przeglądarce. Parsuje Twój JSON, rekurencyjnie wnioskuje typy Pythona i emituje jedną klasę na obiekt: łańcuchy stają się str, łańcuchy daty i czasu ISO datetime, łańcuchy samej daty date, liczby całkowite int, inne liczby float, wartości logiczne bool, tablice List[T], a zagnieżdżone obiekty otrzymują własne klasy modelu nazwane w PascalCase.

Całe parsowanie i generowanie odbywa się lokalnie za pomocą JSON.parse i czystego JavaScriptu, więc nic, co wklejasz, nie opuszcza Twojej maszyny. Klasy podrzędne są emitowane przed klasami, które się do nich odwołują (porządek topologiczny), a nagłówek importuje tylko to, co jest faktycznie używane — BaseModel i Field z pydantic, Optional / List / Union / Any z typing oraz datetime / date, gdy to istotne. from __future__ import annotations jest zawsze dołączane, aby odwołania w przód działały niezależnie od kolejności.

Klucze, których brakuje w niektórych obiektach rodzeństwa lub które są widziane jako null, stają się Optional[T] = None. Przełącznik trybu wyjścia przełącza między Pydantic v2 BaseModel (domyślnie), stdlib @dataclass i typing.TypedDict. Włącz pola snake_case, aby zmienić nazwy kluczy camelCase lub nieprawidłowych i automatycznie dodać Field(alias="originalKey"), aby model nadal parsował oryginalny JSON. Skopiuj kod lub pobierz go jako plik .py.

Najczęściej zadawane pytania

Które typy Pythona są wnioskowane?
string na str, ISO data-czas na datetime, sama data na date, liczba całkowita na int, liczba niecałkowita na float, wartość logiczna na bool, tablica na List[T] z T scalonym z elementów, a obiekt na zagnieżdżoną klasę BaseModel. Wartości null lub brakujące stają się Optional[T] = None.
Czy mogę zamiast tego otrzymać dataclass lub TypedDict?
Tak. Przełącznik trybu wyjścia emituje Pydantic v2 BaseModel (domyślnie), stdlib @dataclass z importem dataclasses lub klasę typing.TypedDict. Wnioskowanie typów jest takie samo; zmienia się tylko powłoka klasy i importy.
Jak obsługiwane są klucze niebędące identyfikatorami lub camelCase?
Przy włączonych polach snake_case klucz taki jak userName staje się user_name plus Field(alias="userName"), więc nadal działa w obie strony. Klucze będące słowami kluczowymi Pythona lub nieprawidłowymi identyfikatorami są zawsze aliasowane, aby wygenerowany kod był prawidłowy.
Czy klasy są poprawnie uporządkowane?
Tak. Zagnieżdżone klasy podrzędne są deklarowane przed klasami rodzicielskimi, które ich używają, a from __future__ import annotations jest dołączane, więc modele kompilują się bez błędów odwołań w przód.

Więcej narzędzi