logo
GeekFormat

JSON naar Python

Gratis online tool JSON naar Python die JSON-gegevens automatisch omzet naar Python @dataclass klassen met type-annotaties. Strings worden str, integers int, floats float, booleans bool, arrays List[T], geneste objecten genereren onafhankelijke dataclasses, null wordt Optional[Any]. Lokale browseruitvoering, kopieer in één klik of download model.py.

Gerelateerde aanbevelingen

Over JSON naar Python: JSON-gegevens omzetten naar uitvoerbare dataclass modellen

JSON naar Python is het proces van het converteren van JSON-gegevens naar Python @dataclass typedefinities.

@dataclass is een standaardbibliotheekfunctie geïntroduceerd in Python 3.7 (PEP 557).

Typeherkenning is het hart van JSON naar Python.

In tegenstelling tot sommige online tools, vinden alle berekeningen van deze tool plaats in de browser.

Gegenereerde code kan direct in Python-projecten worden gebruikt.

Automatisch gegenereerde code is een startpunt, geen eindpunt.

dataclass vs Pydantic BaseModel vs attrs vs TypedDict.

JSON naar Python heeft unieke waarde in het Data Science ecosysteem.

Andere optionele tools in het Python-ecosysteem: marshmallow, cattrs, pydantic, apischema.

In CLI en automatiseringsscenario's.

Prestaties en onderhoudbaarheid met frozen=True en slots=True.

Toepassingsgevallen

  • REST API integratie
  • FastAPI request/response modellen
  • Django Ninja / DRF serializers
  • Scraper data modellering
  • ML feature definitie
  • Configuratiebestand deserialisatie
  • Jupyter Notebook tijdelijke structuur
  • Microservice interface definitie
  • CLI tool ontwikkeling
  • Testgegevens constructie
  • Gestructureerde log analyse
  • Configuratiecentrum migratie
  • Cross-language samenwerking
  • Databasemigratie
  • Blockchain/Web3
  • Data Science ETL
  • OpenAPI schema validatie
  • Didactische voorbeelden
  • Veldnaam conversie

Hoe te gebruiken

  1. Plak JSON in de linker editor of upload een bestand
  2. Wacht 400ms op automatische conversie
  3. Als JSON onjuist is klik «JSON repareren»
  4. Klik «Kopiëren» of «Downloaden» om model.py op te slaan

Functies

  • Lokale browserconversie
  • Uitvoer met dataclass annotaties
  • Automatische typeherkenning
  • Automatische splitsing van geneste objecten
  • Automatische List generic resolutie
  • Optionele Optional velden
  • Automatische conversie met 400ms debounce
  • JSON foutcorrectie in één klik
  • Kopiëren en downloaden
  • localStorage invoergeschiedenis
  • Responsieve aanpasbare panelen
  • Ondersteunt Pydantic/attrs/TypedDict nabewerking

Codevoorbeelden

Python: API response parsen met requests naar gegenereerde dataclass

python
# requirements.txt
# requests>=2.31

from dataclasses import dataclass
from typing import Any, List, Optional
import json
import requests


@dataclass
class Address:
    city: str
    zip: str


@dataclass
class User:
    id: int
    name: str
    active: bool
    address: Address
    tags: List[str]
    label: Optional[Any] = None


def main() -> None:
    resp = requests.get("https://api.example.com/users/1", timeout=10)
    resp.raise_for_status()
    user: User = User(**resp.json())
    print(f"{user.name} lives in {user.address.city}")


if __name__ == "__main__":
    main()

Python: FastAPI gebruikt gegenereerd model voor body validatie (Pydantic versie)

python
# pip install fastapi 'pydantic>=2'

from typing import List, Optional
from fastapi import FastAPI
from pydantic import BaseModel


class Address(BaseModel):
    city: str
    zip: str


class User(BaseModel):
    id: int
    name: str
    email: str
    active: bool = True
    address: Address
    tags: List[str] = []
    label: Optional[str] = None


app = FastAPI()


@app.post("/users")
async def create_user(user: User) -> dict:
    return {"id": user.id, "name": user.name}

Best Practices

JSON-voorbeeld moet voorbeeldwaarden voor alle velden bevatten

Geef voorbeeldwaarden voor sleutelvelden om nauwkeurige typen te verkrijgen.

Complexe JSON bij voorkeur opgesplitst in meerdere dataclasses

Splits in meerdere bestanden als het aantal velden 50 overschrijdt.

Schakel over naar Pydantic BaseModel als runtime-validatie vereist is

Gebruik Pydantic voor FastAPI-projecten of als validatie nodig is.

Combineer mypy voor typecontroles in CI-fase

Voeg mypy src/ --strict toe aan de CI-pipeline.

Vermijd muteerbare standaardwaarden in dataclass-velden

Gebruik field(default_factory=list) in plaats van = [].

Gedownloade model.py moet in een onafhankelijk models-pakket worden geplaatst

Aanbevolen structuur: src/models/__init__.py + submodules.

Gevoelige JSON moeten lokaal worden verwerkt

Gebruik deze tool (lokale uitvoering) voor gevoelige JSON.

Python 3.10+ activeer slots om geheugen te besparen

Gebruik @dataclass(slots=True) in Python 3.10+ voor betere prestaties.

Veelgestelde vragen

Hoe converteer ik JSON naar een Python dataclass?

Plak JSON in de linker editor of upload een bestand.

Bevat de gegenereerde Python code dataclass annotaties?

Ja, genereert de @dataclass decorator en benodigde imports.

Welke JSON-datastructuren worden ondersteund?

Ondersteunt alle geldige JSON-structuren: primitieve typen, arrays, geneste objecten.

Hoe worden JSON-veldtypen toegewezen aan Python-typen?

Strings→str, integers→int, floats→float, booleans→bool, arrays→List[T], geneste objecten→@dataclass, null→Optional[Any].

Welk type wordt gegenereerd voor null-waarden?

Null-waarden genereren Optional[Any].

Worden arrays geconverteerd naar List?

Ja, JSON arrays worden geconverteerd naar List[T].

Hoe worden geneste objecten behandeld?

Elk genest object genereert een onafhankelijke @dataclass klasse.

Kan ik de naam van de gegenereerde klasse aanpassen?

Ja, je kunt handmatig klassenamen wijzigen na generatie.

Kan de gegenereerde code direct in een project worden gebruikt?

Ja, zorg voor een Python 3.7+ omgeving.

Kan ik converteren naar Pydantic BaseModel in plaats van dataclass?

Ja, vervang @dataclass door class Xxx(BaseModel): en importeer uit pydantic.

Worden gegevens naar de server verzonden? Is privacy veilig?

Volledig lokale browseruitvoering, geen gegevens worden naar servers verzonden.

Is registratie of inlog vereist?

Nee. De tool is volledig gratis, geen registratie vereist.

Wat te doen bij JSON-formaatfouten?

Klik op de knop «JSON repareren» om veelvoorkomende fouten automatisch te corrigeren.

Is het converteren van grote JSON traag?

Voor JSON groter dan 10MB raden we de CLI-tool quicktype aan.

Probleemoplossing

Bericht «Voer JSON-gegevens in» of rechterkant leeg

De invoer is leeg. Zorg ervoor dat je geldige JSON hebt geplakt.

Bericht JSON parsing mislukt

Veelvoorkomende oorzaken: afsluitende komma, enkele aanhalingstekens, sleutels zonder aanhalingstekens, JavaScript-commentaren.

Gegenereerde veldtypen niet nauwkeurig genoeg

Wijzig typen handmatig na generatie.

Null-veld genereerde Optional[Any] in plaats van Optional[str]

Concreet type kan niet worden afgeleid uit null.

Importfout gedownload .py-bestand in project

Mogelijke oorzaken: Python-versie lager dan 3.7, naamconflicten.

snake_case JSON-velden komen niet overeen met Python naamstijl

Gebruik alias_generator van Pydantic of hernoem handmatig.

Pagina bevriest bij zeer grote JSON

We raden aan de JSON op te splitsen of de CLI-tool te gebruiken.

FastAPI body validatiefout (422)

Wijzig veldtype naar Optional[Typo] = None.

Woordenlijst

dataclass
Decorator van de standaardbibliotheek Python 3.7+ (@dataclass) voor het automatisch genereren van magische methodes.
Module typing
Standaardbibliotheek Python voor type-annotaties.
Optional[T]
Optioneel type van de module typing.
List[T]
Generiek lijsttype van Python.
Any
Speciaal type dat elk type accepteert.
Pydantic BaseModel
Basisklasse voor datamodellen van de Pydantic-bibliotheek.
FastAPI
Modern Python webframework gebaseerd op Pydantic.
PEP 557
Voorstel dat de syntaxis van de dataclass-decorator definieert.
Type-annotatie (Type Hint)
Type-aanduiding geannoteerd na parameters en variabelen.
PEP 484
Voorstel voor standaard type-annotaties in Python.
from __future__ import annotations
Instructie voor vertraagde evaluatie van annotaties (PEP 563).
model.py
Standaard bestandsnaam die door deze tool wordt gedownload.

Snelle referentietabel JSON-typen → Python-typen

De tool leidt automatisch het corresponderende Python-type af op basis van het type JSON-waarde:

Voorbeeld JSON-waardeGegenereerd Python-typeUitleg
nullOptional[Any]Null-waarde onbepaald
true / falseboolJSON booleans → bool
42intJSON integers → int
3.14floatJSON floats → float
"hello"strJSON strings → str
["a","b"]List[str]String arrays → List[str]
[1,2,3]List[int]Integer arrays → List[int]
[{...},{...}]List[Item]Object arrays → List[Item]
[]List[Any]Lege array
{...} genest objectOnafhankelijke @dataclassGeneste objecten genereren onafhankelijke @dataclass

Privacy & Security

Alle bewerkingen van deze JSON naar Python tool vinden volledig lokaal plaats in de browser: JSON parsing, Python codegeneratie en bestandsdownloads worden allemaal client-side uitgevoerd via JavaScript, geen JSON-inhoud, geüploade bestanden of gegenereerde code wordt via het netwerk naar servers verzonden.

Authoritative References