Przejdź do treści
100% lokalnie

JSON na klasę danych Python

Zamień próbkę JSON na typizowane klasy Python — dataclass, Pydantic, TypedDict lub NamedTuple.

Wejście
Wynik

JSON na klasę danych Python

Wklej JSON lub tablicę, a to narzędzie automatycznie określi typy i wygeneruje klasy Python z pełnymi adnotacjami. Wybierz styl: @dataclass, Pydantic BaseModel do weryfikacji i przetwarzania, TypedDict do typowania istniejącego kodu lub NamedTuple dla niezmienianych rekordów. Obiekty zagnieżdżone stają się własnymi klasami w odpowiedniej kolejności; obiekty o identycznym kształcie ponownie używają jedną klasę zamiast duplikacji.

Opcje kontrolują, czy kod jest konserwatywny czy nowoczesny. „Optional dla pól null” zamienia null na Optional zamiast pustego None; „Dodaj wartości domyślne” umożliwia pominięcie pól przy tworzeniu instancji z automatyczną zmianą kolejności pól wymaganych. „Alias dla nieprawidłowych nazw pól” oczyszcza klucze JSON, które nie są prawidłowymi identyfikatorami, i zachowuje oryginalny klucz poprzez metadane pola lub Pydantic Field(alias=...) dla poprawnej serializacji. „Użyj list[T] zamiast List[T]” przełącza między nowoczesnymi PEP 585 generics a starszym typing.List, a przełącznik przyszłości zmienia Optional[X]/Union[X, Y] na X | None / X | Y w całym kodzie.

Wnioskowanie rozróżnia ciągi, liczby całkowite, zmiennoprzecinkowe i logiczne, łączy mieszaną zawartość tablic w Union i nadaje root tablicom RootItem klasę z Root = list[RootItem] aliasem. Liczby bez części ułamkowej czytane są jako int — nie ma sposobu na odzyskanie „36.0” po przetworzeniu. Wszystko działa lokalnie; Twój JSON i wygenerowany Python nigdy nie opuszczą Twoje urządzenie.

Częste pytania

Jakie style wyjścia są obsługiwane?
Cztery: @dataclass (domyślny styl biblioteki standardowej), Pydantic BaseModel (do weryfikacji i przetwarzania JSON), TypedDict (adnotacje typów nad zwykłym słownikiem bez klasy runtime) i NamedTuple (niezmienialne rekordy podobne do krotek).
Jak obsługiwane są obiekty zagnieżdżone i tablice obiektów?
Każdy odrębny kształt obiektu staje się własną klasą, nazwaną po polu, które go zawiera i zdefiniowanej przed klasą, która się do niego odwołuje. Obiekty z identycznym zestawem pól i typów ponownie używają jedną klasę zamiast duplikowania — tablica rekordów o tym samym kształcie generuje jedną klasę elementu.
Co się stanie z kluczami JSON, które nie są prawidłowymi identyfikatorami Python?
Są oczyszczane na prawidłową nazwę atrybutu (np. „first-name” → first_name). Gdy opcja „Alias dla nieprawidłowych nazw pól” jest włączona, oryginalny klucz jest zachowany poprzez natywny alias (metadane pola w dataclass, Field(alias=...) w Pydantic) lub komentarz na końcu dla TypedDict i NamedTuple, które nie mają wbudowanego mechanizmu aliasu.
Czy może niezawodnie rozróżnić int i float?
Klasyfikuje każdą liczbę na podstawie tego, czy ma część ułamkową w próbce, ale sam JSON nie rozróżnia int od float dla liczb całkowitych — wartość wysłana jako 36.0 jest po przetworzeniu nierozróżnialna od 36, więc jest czytana jako int.
Czy mój JSON jest gdzieś przesyłany?
Nie. Przetwarzanie i generowanie kodu odbywają się całkowicie w Twojej przeglądarce — JSON, który wklejasz, i Python, który wygeneruje, nigdy nie opuszczają Twoje urządzenie.