Skip to content

Konwerter JSON na klasy Python

Wklej JSON i uzyskaj klasy Python — dataclass, Pydantic v2 lub TypedDict. Poprawne typy Optional, aliasy camelCase, klasy zagnieżdżone. W 100% w przeglądarce, bezpłatnie.

Bez śledzenia Działa w przeglądarce Bezpłatne
Wynik
0 znaków
Wynik Python
0 linii
Wynik zweryfikowano względem składni Python 3.12+ i semantyki Pydantic v2 dla rzeczywistych ładunków API. — Go Tools Team · Jul 3, 2026

Czym jest konwersja JSON na Python?

Konwersja JSON na Python zamienia próbkę JSON w gotowe do użycia klasy Python — dataclass z biblioteki standardowej, model Pydantic v2 lub TypedDict — dzięki czemu nigdy nie piszesz ręcznie definicji pól dla odpowiedzi API czy pliku konfiguracyjnego. Ten generator klas Python wnioskuje poprawne typy (int, float, str, bool, Optional), zamienia obiekty zagnieżdżone w nazwane klasy i dodaje aliasy Pydantic dla kluczy camelCase — wszystko w 100% w przeglądarce.

Przykłady

Odpowiedź API → dataclass

{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]}
from dataclasses import dataclass
from typing import List


@dataclass
class Root:
    id: int
    name: str
    email: str
    active: bool
    roles: List[str]

Typowy ładunek REST staje się gotową do użycia klasą @dataclass. Liczby całkowite są wnioskowane jako int, dziesiętne jako float, a tablice stają się List[str].

Zagnieżdżony obiekt (klasa potomna najpierw)

{"repo":"pydantic","owner":{"login":"samuelcolvin","id":100}}
from dataclasses import dataclass


@dataclass
class Owner:
    login: str
    id: int


@dataclass
class Root:
    repo: str
    owner: Owner

Zagnieżdżone obiekty stają się osobnymi, nazwanymi klasami. Klasa potomna (Owner) jest emitowana przed nadrzędną, więc kod działa bez from __future__ import annotations.

camelCase → alias Pydantic v2

{"login":"octocat","publicRepos":15,"createdAt":"2011-01-25"}
from pydantic import BaseModel, ConfigDict, Field


class Root(BaseModel):
    model_config = ConfigDict(populate_by_name=True)

    login: str
    public_repos: int = Field(alias="publicRepos")
    created_at: str = Field(alias="createdAt")

W trybie Pydantic pola są w snake_case z Field(alias=...) mapującym z powrotem na oryginalny klucz JSON, a populate_by_name pozwala budować model na oba sposoby — dzięki czemu walidacja przechodzi w obie strony na rzeczywistych danych API.

Tablica obiektów → TypedDict (klucz opcjonalny)

{"users":[{"id":1,"nick":"x"},{"id":2}]}
from typing import List, Optional, TypedDict


class User(TypedDict):
    id: int
    nick: Optional[str]


class Root(TypedDict):
    users: List[User]

Tablice obiektów są scalane w jeden typ elementu. Klucz brakujący w niektórych elementach (nick) staje się Optional. TypedDict opisuje kształt zwykłego dict bez żadnego narzutu w czasie wykonania.

Jak przekonwertować JSON na Python

  1. 1

    Wklej swój JSON

    Wstaw obiekt JSON, tablicę lub odpowiedź API do pola wejściowego. Konwersja zaczyna się natychmiast.

  2. 2

    Wybierz dataclass, Pydantic lub TypedDict

    Przełącz styl wyniku, aby dopasować go do swojego projektu, i zmień nazwę klasy głównej z domyślnej Root.

  3. 3

    Skopiuj lub pobierz

    Przejmij wygenerowany kod Python jednym kliknięciem i wklej go prosto do swojego kodu.

Common Use Cases

Typowani klienci API
Zamień przykładową odpowiedź REST lub GraphQL w modele Pydantic lub klasy dataclass dla klienta requests lub httpx, bez ręcznego pisania definicji pól.
Parsowanie konfiguracji i fikstur
Generuj modele dla plików konfiguracyjnych JSON, fikstur testowych lub ładunków webhooków, które musisz wczytać i zweryfikować.
Szybkie prototypowanie i podpowiedzi typów
Wklej nieznany ładunek, aby natychmiast zobaczyć jego kształt jako typy Python — szybki sposób na poznanie nowego API lub dodanie podpowiedzi TypedDict do starszego kodu opartego na dict.

Jak działa konwersja

Wnioskowanie strukturalne
Każdy obiekt staje się nazwaną klasą; identyczne kształty są deduplikowane, więc otrzymujesz jedną klasę, a nie kopie. Tablice obiektów są scalane klucz po kluczu, a klucze nieobecne w niektórych elementach stają się Optional.
Trzy idiomatyczne cele
dataclass nie ma żadnych zależności i zachowuje prawidłowe klucze dla Root(**data); Pydantic v2 dodaje aliasy Field oraz populate_by_name dla prawdziwej walidacji; TypedDict opisuje zwykły dict dla statycznych kontrolerów typów, używając składni funkcyjnej, gdy klucz nie jest identyfikatorem.
Poprawne, oszczędne w zależności typowanie
Liczby całkowite mapują się na int (dowolna precyzja, bez przepełnienia), dziesiętne i wykładniki na float, a pola zawierające wyłącznie null na Optional[Any]. Importy z typing (Optional, List, Any) są dodawane tylko wtedy, gdy są faktycznie używane.
100% po stronie klienta
Parsowanie i generowanie działają w przeglądarce bez wywołań sieciowych, więc twoje dane pozostają prywatne.

Wskazówki dla czystych modeli Python

Dopasuj tryb do zadania
Używaj dataclass do wewnętrznego przechowywania danych, Pydantic v2, gdy walidujesz lub parsujesz niezaufane dane wejściowe, a TypedDict, gdy potrzebujesz jedynie statycznych podpowiedzi typów dla istniejących słowników dict.
Wklej reprezentatywną próbkę
Pola są oznaczane jako Optional tylko wtedy, gdy próbka je pomija, a wartości zawierające wyłącznie null przechodzą na Any. Wypełniony, kompletny przykład daje najbardziej precyzyjne typy.
Nazwij swoją klasę główną
Ustaw sensowną nazwę główną (User, ApiResponse) zamiast domyślnego Root, aby kod był czytelny i łatwy do zaimportowania.

Najczęściej zadawane pytania

Jak przekonwertować JSON na klasę Python?
Wklej JSON do pola wejściowego. Konwerter odczytuje go natychmiast w przeglądarce i generuje kod Python po prawej stronie. Wybierz dataclass, Pydantic v2 lub TypedDict przełącznikiem, a następnie kliknij Skopiuj — bez przesyłania, bez konta, bez czekania.
Czym różni się wynik dataclass, Pydantic i TypedDict?
dataclass daje klasę @dataclass z biblioteki standardowej bez żadnych zależności — świetną do zwykłego przechowywania danych. Pydantic v2 emituje klasy BaseModel, które walidują i konwertują dane w czasie wykonania, idealne do parsowania niezaufanych odpowiedzi API. TypedDict opisuje kształt zwykłego dict dla statycznych kontrolerów typów (mypy, Pyright) bez żadnego kosztu w czasie wykonania. Przełączaj tryby, aby porównać ten sam JSON w każdym z nich.
Jak wygenerować model Pydantic z JSON?
Wybierz zakładkę Pydantic v2. Pola są konwertowane na snake_case z Field(alias="originalKey"), więc model nadal odczytuje JSON w camelCase, a model_config = ConfigDict(populate_by_name=True) pozwala także tworzyć go po nazwie pola. Sparsuj ładunek za pomocą Root.model_validate(data) — Pydantic waliduje typy i zgłasza czytelny błąd przy nieprawidłowych danych.
Jak wynik dataclass obsługuje klucze camelCase?
dataclass nie ma wbudowanego aliasu, więc aby Root(**data) nadal działało, tryb dataclass zachowuje oryginalny klucz jako nazwę pola, gdy jest on prawidłowym identyfikatorem Python (publicRepos pozostaje publicRepos). Jeśli chcesz idiomatycznego snake_case z aliasami, użyj zamiast tego trybu Pydantic v2, który mapuje pola snake_case z powrotem na dokładny klucz JSON.
Jak typowane są pola opcjonalne i null?
Gdy klucz pojawia się w niektórych elementach tablicy, ale nie w innych, jego typ jest opakowany w Optional. Pole, które zawsze jest tylko null, staje się Optional[Any], ponieważ samo JSON null nie niesie żadnego typu. Wklej reprezentatywną próbkę z wypełnioną wartością, aby uzyskać bardziej konkretny typ niż Any.
Na jaki typ Python mapowana jest każda wartość JSON?
Ciągi znaków mapują się na str, wartości logiczne na bool, liczby całkowite na int, a każda liczba z kropką dziesiętną lub wykładnikiem na float. Ponieważ liczby całkowite w Pythonie mają dowolną precyzję, nawet ogromne identyfikatory pozostają int — nie ma przepełnienia 64-bitowego. Puste lub mieszane tablice stają się List[Any], a obiekty stają się klasami zagnieżdżonymi.
Czy obsługuje obiekty zagnieżdżone i tablice obiektów?
Tak. Każdy zagnieżdżony obiekt staje się własną nazwaną klasą, a identyczne kształty są deduplikowane do jednej klasy używanej ponownie przez każde pole. Tablice obiektów są scalane klucz po kluczu, więc otrzymujesz jedną klasę elementu, a klucze brakujące w niektórych elementach są oznaczane jako Optional. Klasy potomne są zawsze emitowane przed klasami, które ich używają.
Jak obsługiwane są słowa kluczowe Python i klucze niebędące identyfikatorami?
Klucz JSON będący słowem kluczowym Python (class, from, import) otrzymuje końcowe podkreślenie (class_). Klucze z myślnikami, spacjami lub początkową cyfrą są sanityzowane do prawidłowych identyfikatorów w trybach dataclass i Pydantic. W trybie TypedDict każdy dict zawierający klucz niebędący identyfikatorem jest emitowany ze składnią funkcyjną TypedDict('Name', {...}), więc dokładny klucz, taki jak „first-name”, zostaje zachowany.
Jak użyć wygenerowanej klasy dataclass do parsowania JSON?
Dla płaskiego obiektu json.loads, a następnie Root(**data) działa bezpośrednio. W przypadku struktur zagnieżdżonych dataclass nie przetwarza zagnieżdżeń rekurencyjnie samodzielnie — albo zbuduj obiekty potomne własnoręcznie, użyj biblioteki takiej jak dacite czy pydantic.dataclasses, albo przełącz to narzędzie na tryb Pydantic v2, w którym Root.model_validate(json.loads(text)) parsuje całe drzewo w jednym wywołaniu.
Czy moje dane JSON są prywatne i bezpieczne?
Tak. Konwersja odbywa się w 100% w przeglądarce przy użyciu JavaScript. Twój JSON — w tym tokeny, identyfikatory czy dane klientów — nigdy nie opuszcza strony i nigdy nie jest wysyłany na serwer.
Czy narzędzie jest bezpłatne? Czy potrzebuję konta?
Jest całkowicie bezpłatne, bez rejestracji, bez limitów i bez reklam zaśmiecających obszar roboczy. Działa offline po załadowaniu strony.

Powiązane narzędzia

Zobacz wszystkie narzędzia →