Zamiana próbki JSON na dataclassy, modele Pydantic lub TypedDict w Pythonie z adnotacjami typów
Działa w przeglądarce. Wpisane dane nie są nigdzie wysyłane. Sprawdzono 16 października 2026.Wystarczy wkleić próbkę JSON, aby otrzymać dataclassy, modele Pydantic v2 lub TypedDict w Pythonie z adnotacjami typów. Liczby całkowite stają się int, a każda wartość dziesiętna zmienia pole na float; wartość null lub brakująca staje się str | None z None jako wartością domyślną, a 3 style klas korzystają z tego samego wnioskowania.
Ta strona została przetłumaczona maszynowo z angielskiego oryginału. Tłumaczenie nie zostało jeszcze sprawdzone przez człowieka, dlatego wiążąca jest wersja angielska. Przeczytaj angielski oryginał
Wklej próbkę JSON, na przykład odpowiedź API, do lewego pola.
Klasy Python pojawiają się w trakcie pisania: jedna klasa na obiekt, z adnotacjami typów takimi jak int, float, list[str] i str | None.
Wybierz dataclass, Pydantic lub TypedDict oraz typowanie Pythona 3.9, jeśli projekt jest starszy niż 3.10.
Kliknij Kopiuj albo Pobierz, aby zapisać models.py.
Python wczytuje JSON jako słowniki, a dopiero klasa z adnotacjami typów pozwala edytorowi, narzędziu do sprawdzania typów lub Pydantic wychwycić literówkę w kluczu albo błędny typ. Konwerter pisze takie klasy na podstawie próbki, więc długa odpowiedź API staje się typowanym Pythonem po jednym wklejeniu.
Jak dobierane są typy.
| Wartość JSON | Typ Python |
|---|---|
| "text" | str |
| true / false | bool |
| 42 (tylko liczby całkowite) | int |
| 4.5 (wystąpiła jakakolwiek część dziesiętna) | float |
| null oraz inny typ | str | None lub Optional[str] |
| tylko null lub różne rodzaje | Any |
| [ ... ] | list[...] |
| { } pusty | dict[str, Any] |
| { ... } | osobna klasa |
Tablice obiektów. Wszystkie obiekty tablicy są łączone w jedną klasę, więc klucz obecny tylko w niektórych nadal się w niej znajduje, z typem dopuszczającym None i None jako wartością domyślną. Dwa obiekty o dokładnie tych samych kluczach i typach współdzielą jedną klasę.
Trzy style. Dataclass nie wymaga instalowania niczego; pola z wartością domyślną są przenoszone za pozostałe, bo inaczej Python zgłasza TypeError. Modele Pydantic używają atrybutów w snake_case z Field(alias=...) dla kluczy zapisanych inaczej, np. userName lub first-name. TypedDict zachowuje klucze dokładnie i oznacza jako NotRequired te, które występują tylko czasem.
Kolejność i nazwy. Klasy są zapisywane od klas potomnych, więc każda nazwa jest zdefiniowana przed użyciem. Słowo kluczowe, np. class, staje się class_, a klucz, który przesłoniłby typ, np. list, dostaje ten sam podkreślnik.
Każdy styl sprawdzono, uruchamiając wynik w CPython z Pydantic 2 i walidując próbkę. Nic, co zostanie wklejone, nie opuszcza przeglądarki.
Po wklejeniu próbki JSON do konwertera obok pojawiają się klasy Python, po jednej na obiekt, z adnotacją typu przy każdym atrybucie. Wybierz dataclass dla prostych klas, Pydantic do walidacji lub TypedDict, aby nadal pracować ze zwykłymi słownikami, a następnie skopiuj moduł do projektu.
Dataclass sprawdza się przy danych tworzonych samodzielnie i nie wymaga żadnej biblioteki. Pydantic sprawdza się przy danych z zewnątrz, takich jak odpowiedzi API, bo kontroluje każdą wartość i sam konwertuje zagnieżdżone obiekty. TypedDict dodaje jedynie adnotacje typów do słownika zwracanego przez json.loads, więc nic nie kosztuje w czasie działania.
Atrybuty Pydantic są zapisywane w snake_case, zgodnie z PEP 8, z Field(alias="userName"), dzięki czemu walidacja nadal odczytuje oryginalny klucz. TypedDict zachowuje każdy klucz dokładnie i przechodzi na składnię funkcyjną, gdy klucz nie jest poprawną nazwą. Dataclass zachowuje klucze będące poprawnymi nazwami i odnotowuje pozostałe.
Klucz, który w próbce miał wartość null albo brakuje go w niektórych obiektach tablicy, może zawierać None, więc adnotacja to dopuszcza. Brakujące klucze dostają też None jako wartość domyślną, a w dataclass takie pola trafiają na koniec, bo Python odrzuca pole bez wartości domyślnej po polu, które ją ma.
Domyślne typowanie, np. list[str] i str | None, wymaga Pythona 3.10 lub nowszego. Po włączeniu typowania Pythona 3.9 zamiast tego używane są Optional i List z modułu typing. NotRequired dla TypedDict pochodzi z typing_extensions, a od Pythona 3.11 jest w samym typing.
Nie. Konwersja działa w przeglądarce bez żadnego żądania do serwera, a JSON nie jest zapisywany, więc odpowiedzi API z tokenami lub danymi osobowymi zostają na urządzeniu. Po zamknięciu karty nic nie pozostaje.
Stawki i przepisy się zmieniają; przed oparciem się na danej liczbie należy sprawdzić źródło.
Nadal coś nie działa? Zapytaj o narzędzie Konwerter JSON na klasy Python a odpowiedzieć może każdy, kto zna odpowiedź. Konto nie jest potrzebne.