Konwerter Python do JSON
Wrzuć dicty Pythona, dataclassy albo modele Pydantic. Dostaniesz czysty JSON.
Co robi to narzędzie
Jeśli kiedykolwiek musiałeś zamienić dict Pythona albo dataclass na JSON-owy payload do wywołania API, fixture testowego albo kawałka dokumentacji, to wiesz, że szybko robi się to męczące — trzeba przerzucić cudzysłowy, True/False zamienić na true/false, None na null, a wartości datetime/Decimal serializować ręcznie. Wrzuć Pythona tutaj i dostań z powrotem poprawny JSON, dokładnie taki, jaki wypluje json.dumps albo .model_dump_json() z Pydantica — bez pisania klejonki.
To nie jest zwykłe podmienianie stringów. Konwerter rozumie, co Python robi w trakcie serializacji: stringi w pojedynczych cudzysłowach dostają podwójne, tuple zwija się do tablic JSON, set i frozenset też stają się tablicami, datetime i date lądują jako stringi ISO-8601 zgodnie z RFC 8259, Decimal schodzi do liczby, a elementy Enum emitują swoje .value. Zagnieżdżone obiekty są rozwijane w miejscu, więc dataclass zawierający listę innych dataclassów przejdzie czysto.
Modele Pydantic (i v1, i v2) są obsługiwane. Aliasy pól ustawione przez Field(alias=...) zmieniają nazwy kluczy w outpucie, pola Optional, które są None, zostają jako null, a typy Literal/Union wychodzą jako ich wartość runtime’owa. Wrzuć cały moduł z kilkoma klasami, jeśli chcesz — każda wyjdzie jako osobny wpis najwyższego poziomu.
Jak tego używać
Trzy kroki. Działa tak samo, czy wrzucasz dwuwierszowy dict, czy 300-linijkowy moduł.
Wrzuć swojego Pythona (albo spróbuj przykładu)
Wklej swojego Pythona do lewego edytora tak jak jest. Literał dict, definicja dataclassa plus instancja, model Pydantic albo kilka klas z zagnieżdżonymi typami — wszystko jedno. Kliknij Load Sample, jeśli chcesz zobaczyć, jak wygląda realistyczny input.
Nie musisz wycinać importów ani dekoratorów. Zostaw formatowanie w stylu PEP 8, type hinty i składnię dataclass w spokoju.
Kliknij Convert
Kliknij zielony przycisk Convert. Narzędzie czyta Pythona, buduje graf obiektów i serializuje go tak samo, jak zrobiłby to json.dumps — z wcięciami dla czytelności. Przez chwilę lata wskaźnik ładowania.
Skopiuj JSON
Prawy panel zapełnia się ładnie sformatowanym JSON-em poprawnym według specyfikacji JSON. Wklej go do body requestu, fixture’u pytesta, przykładu OpenAPI w FastAPI albo pliku konfiga.
Kiedy to naprawdę ratuje życie
Fixture’y request API
Masz model request Pydantica i potrzebujesz przykładowego body JSON do Postmana, curla albo przykładu w Swaggerze. Wklej model, dostań JSON, gotowe.
Dane do pytest i testów jednostkowych
Zamień instancję dataclassa z pliku testowego w plik JSON-owy seed do testów integracyjnych albo porównań snapshotów — bez customowego enkodera.
Szkielet pliku konfiguracyjnego
Settings dataclass z kilkudziesięcioma polami zamienia się w gotowy do edycji szablon JSON, więc nie klepiesz nawiasów po raz dziesiąty.
Synchronizacja docsów z kodem
Generuj przykłady JSON do README albo referencji API prosto z faktycznych modeli, które już masz, żeby dokumentacja nie odpłynęła od kodu.
Częste pytania
Czy działa z Pydanticiem v1 i v2?
Tak. Oba są obsługiwane, w tym Field(alias=...), model_config, Field(default_factory=...) i modele zagnieżdżone. Aliasy zmieniają nazwy kluczy w outpucie, zgodnie z tym, co wypluje sam Pydantic.
Jak obsługiwane są datetime, Decimal i UUID?
datetime, date i time wychodzą jako stringi ISO-8601. Decimal schodzi do liczby JSON (bez cudzysłowów). UUID staje się standardowym stringiem hex. bytes jest kodowany base64. To zgadza się z konwencjami z modułu json Pythona, kiedy podepniesz customowy enkoder.
A co z Enum, Literal i Optional?
Elementy Enum emitują swoje .value. Literal["a", "b"] emituje runtime’owy string. Pola Optional[X], które są None, przechodzą jako JSON null zamiast być wywalane — dzięki temu kształt outputu zgadza się z type hintami.
Czy mogę wrzucić cały moduł z wieloma klasami?
Tak. Każda klasa najwyższego poziomu z instancją w module wychodzi jako osobny wpis w JSON-ie. Zagnieżdżone dataclassy i modele Pydantic są rozwijane w miejscu, a pola dziedziczone z klas rodziców też są dołączane.
Czy mój kod jest gdzieś zapisywany?
Kod leci do backendu tylko po to, żeby go skonwertować. Nie logujemy go ani nie trzymamy. Jak z każdym narzędziem online — jeśli to, co wklejasz, jest naprawdę wrażliwe, daj temu najpierw okiem.
Co jeśli w kodzie są dziwactwa — lambdy, generatory, uchwyty plików?
Niesensowne do serializacji wartości (funkcje, generatory, otwarte sockety) wychodzą jako null, zamiast wywalać całą konwersję. Jeśli źródło ma błąd składni, napraw najpierw te oczywiste — parser jest tolerancyjny na dziwactwa stylu, ale nie uruchomi zepsutego kodu.
Inne narzędzia, które mogą Ci się przydać
Python do JSON to jeden kawałek układanki. Oto narzędzia, które dobrze z tym współgrają: