DT Dev Tools

JSON naar Python converter — Klassen genereren

Zet JSON om naar Python-dataclasses of Pydantic-modellen met type hints, snake_case-velden en from_dict/to_dict-helpers. Gratis, privé en in je browser.

🔒 Draait volledig in je browser — niets wordt geüpload

Advertentie

Van JSON naar getypeerde Python-klassen

Werken met ruwe dictionaries gaat snel, totdat een typfout in een sleutelnaam drie lagen dieper een KeyError veroorzaakt. Deze JSON naar Python converter genereert getypeerde klassen uit een JSON-voorbeeld, zodat je editor, typechecker en teamgenoten precies weten wat elke payload bevat. Elk object wordt een klasse met geannoteerde attributen, geneste objecten worden eigen klassen, lijsten worden getypeerd op hun elementtype en waarden die soms ontbreken, krijgen een optioneel type. JSON-sleutels worden omgezet naar snake_case-attribuutnamen, terwijl de gegenereerde serialisatiecode de oorspronkelijke sleutels op de lijn behoudt.

De generatie wordt verzorgd door quicktype, dat alle elementen van elke array samenvoegt voordat het typen afleidt. Een veld dat maar in sommige items voorkomt, wordt dus toch vastgelegd en als optioneel gemarkeerd in plaats van stilzwijgend weggelaten.

Dataclasses, Pydantic en Python-versies

Standaard gebruikt de uitvoer @dataclass-klassen uit de standaardbibliotheek plus from_dict- en to_dict-functies die elk veld valideren en converteren, zodat je geen externe afhankelijkheid nodig hebt. Gebruikt je project al Pydantic — voor FastAPI-requestbodies, instellingen of validatie — vink dan Pydantic BaseModel aan en de klassen erven in plaats daarvan van BaseModel. De Python-versiekeuze bepaalt de typesyntaxis: 3.10+ levert moderne annotaties als list[int] en str | None, terwijl oudere doelen terugvallen op de module typing. Vink Classes only aan om de conversiehelpers helemaal over te slaan.

Praktische tips

Gebruik een voorbeeld dat optionele velden benut en meerdere arrayelementen bevat, want de inferentie kan alleen beschrijven wat ze ziet. Geef de rootklasse een naam uit je domein — Invoice leest beter dan Root — en de download gebruikt die naam. Voer na het genereren je formatter en typechecker uit (Black, Ruff, mypy of Pyright) en maak strakker wat een voorbeeld niet kan tonen, zoals strings die eigenlijk enums zijn of getallen die Decimal moeten zijn. Alle parsing en codegeneratie gebeurt lokaal, dus je kunt veilig antwoorden plakken die klantgegevens bevatten.

Hoe te gebruiken

  1. Plak JSONPlak een JSON-object of -array, of klik op Load sample.
  2. Kies een stijlKies je Python-versie en of je dataclasses of Pydantic-modellen wilt.
  3. Kopieer de klassenKopieer de gegenereerde code of download die als .py-module.

Veelgestelde vragen

Genereert het dataclasses of Pydantic-modellen?
Allebei. De standaarduitvoer gebruikt @dataclass met type hints; vink Pydantic BaseModel aan om in plaats daarvan Pydantic-modellen te krijgen.
Welke Python-versies worden ondersteund?
Kies 3.6, 3.7, 3.9 of 3.10+. Nieuwere doelen gebruiken ingebouwde generics zoals list[str] en de unie-syntaxis X | None.
Worden eigenschapsnamen omgezet naar snake_case?
Ja. Veldnamen worden Pythonische snake_case, terwijl de gegenereerde functies from_dict en to_dict de oorspronkelijke JSON-sleutels behouden.
Worden mijn gegevens geüpload?
Nee. Alles draait lokaal in je browser, dus privé API-antwoorden blijven op je apparaat.
Advertentie