Skip to content

Convertitore da JSON a classi Python

Incolla JSON e ottieni classi Python: dataclass, Pydantic v2 o TypedDict. Tipi Optional, alias camelCase, classi annidate. Gratis, online e nel browser.

Niente tracciamento Funziona nel browser Gratuito
Output
0 caratteri
Output Python
0 righe
Output verificato rispetto alla sintassi di Python 3.12+ e alla semantica di Pydantic v2 su payload API reali. — Go Tools Team · Jul 3, 2026

Cos'è la conversione da JSON a Python?

La conversione da JSON a Python trasforma un campione JSON in classi Python pronte all'uso — un dataclass della libreria standard, un modello Pydantic v2 o un TypedDict — così non scrivi mai a mano le definizioni dei campi per una risposta API o un file di configurazione. Questo generatore di classi Python deduce i tipi corretti (int, float, str, bool, Optional), trasforma gli oggetti annidati in classi con nome e aggiunge gli alias Pydantic per le chiavi in camelCase, tutto al 100% nel tuo browser.

Esempi

Risposta 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]

Un tipico payload REST diventa un @dataclass pronto all'uso. I numeri interi vengono dedotti come int, i decimali come float e gli array diventano List[str].

Oggetto annidato (classe figlia prima)

{"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

Gli oggetti annidati diventano classi separate e con nome. La classe figlia (Owner) viene emessa prima della classe genitore, così il codice gira senza 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")

In modalità Pydantic, i campi sono snake_case con Field(alias=...) che rimanda alla chiave JSON originale, e populate_by_name ti permette di costruire il modello in entrambi i modi — così la validazione elabora fedelmente i dati API reali in entrambi i sensi.

Array di oggetti → TypedDict (chiave opzionale)

{"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]

Gli array di oggetti si uniscono in un unico tipo per l'elemento. Una chiave assente in alcuni elementi (nick) diventa Optional. TypedDict descrive la forma di un semplice dict senza alcun costo a runtime.

Come convertire JSON in Python

  1. 1

    Incolla il tuo JSON

    Inserisci un oggetto JSON, un array o una risposta API nel campo di input. La conversione parte istantaneamente.

  2. 2

    Scegli dataclass, Pydantic o TypedDict

    Cambia lo stile dell'output per adattarlo al tuo progetto e rinomina la classe radice dal predefinito Root.

  3. 3

    Copia o scarica

    Prendi il Python generato con un clic e incollalo direttamente nel tuo codice.

Common Use Cases

Client API tipizzati
Trasforma una risposta di esempio REST o GraphQL in modelli Pydantic o dataclass per un client requests o httpx senza scrivere a mano le definizioni dei campi.
Parsing di configurazioni e fixture
Genera modelli per file di configurazione JSON, fixture di test o payload di webhook che devi caricare e validare.
Prototipazione rapida e type hint
Incolla un payload sconosciuto per vederne all'istante la forma come tipi Python — un modo rapido per esplorare una nuova API o aggiungere i type hint TypedDict a codice legacy basato su dict.

Come funziona la conversione

Inferenza strutturale
Ogni oggetto diventa una classe con nome; le forme identiche vengono deduplicate così ottieni una sola classe, non delle copie. Gli array di oggetti vengono uniti chiave per chiave, e le chiavi assenti in alcuni elementi diventano Optional.
Tre target idiomatici
dataclass mantiene zero dipendenze e preserva le chiavi valide per Root(**data); Pydantic v2 aggiunge gli alias Field più populate_by_name per una vera validazione; TypedDict descrive un semplice dict per i type checker statici, usando la sintassi funzionale quando una chiave non è un identificatore.
Tipizzazione corretta e con poche dipendenze
I numeri interi corrispondono a int (precisione arbitraria, nessun overflow), i decimali e gli esponenti a float, e i campi solo null a Optional[Any]. Gli import da typing (Optional, List, Any) vengono aggiunti solo quando effettivamente usati.
100% lato client
Il parsing e la generazione girano nel tuo browser senza chiamate di rete, così i tuoi dati restano privati.

Consigli per modelli Python puliti

Adatta la modalità al lavoro
Usa dataclass per i contenitori di dati interni, Pydantic v2 quando validi o analizzi input non attendibili, e TypedDict quando ti servono solo i type hint statici su dict esistenti.
Incolla un campione rappresentativo
I campi vengono contrassegnati come Optional solo quando un campione li omette, e i valori solo null ripiegano su Any. Un esempio completo e compilato produce i tipi più precisi.
Dai un nome alla classe radice
Imposta un nome radice significativo (User, ApiResponse) invece del Root predefinito per un codice leggibile e importabile.

Domande frequenti

Come converto JSON in una classe Python?
Incolla il tuo JSON nel campo di input. Il convertitore lo analizza istantaneamente nel browser e genera il Python sulla destra. Scegli dataclass, Pydantic v2 o TypedDict con l'interruttore, poi clicca Copia — nessun upload, nessun account, nessuna attesa.
Qual è la differenza tra gli output dataclass, Pydantic e TypedDict?
dataclass ti dà un @dataclass della libreria standard senza dipendenze — ottimo per semplici contenitori di dati. Pydantic v2 emette classi BaseModel che validano e convertono i dati a runtime, ideali per analizzare risposte API non attendibili. TypedDict descrive la forma di un semplice dict per i type checker statici (mypy, Pyright) senza alcun costo a runtime. Cambia modalità per confrontare lo stesso JSON in ciascuna.
Come genero un modello Pydantic da JSON?
Scegli la scheda Pydantic v2. I campi vengono convertiti in snake_case con Field(alias="originalKey") così il modello legge comunque il JSON in camelCase, e model_config = ConfigDict(populate_by_name=True) ti permette di costruirlo anche per nome del campo. Analizza un payload con Root.model_validate(data) — Pydantic valida i tipi e solleva un errore chiaro in caso di input errato.
Come gestisce l'output dataclass le chiavi in camelCase?
Un dataclass non ha un alias integrato, quindi per far funzionare Root(**data) la modalità dataclass mantiene la chiave originale come nome del campo quando è un identificatore Python valido (publicRepos resta publicRepos). Se vuoi uno snake_case idiomatico con gli alias, usa invece la modalità Pydantic v2, che rimanda i campi snake_case alla chiave JSON esatta.
Come vengono tipizzati i campi opzionali e null?
Quando una chiave compare in alcuni elementi di un array ma non in altri, il suo tipo viene racchiuso in Optional. Un campo che è sempre null diventa Optional[Any], perché il null di JSON da solo non porta con sé alcun tipo. Incolla un campione rappresentativo con un valore compilato per ottenere un tipo più specifico di Any.
A quale tipo Python corrisponde ogni valore JSON?
Le stringhe corrispondono a str, i booleani a bool, i numeri interi a int e qualsiasi numero con la virgola decimale o un esponente a float. Poiché gli interi di Python hanno precisione arbitraria, anche gli ID enormi restano int — non c'è alcun overflow a 64 bit. Gli array vuoti o di tipi misti diventano List[Any], e gli oggetti diventano classi annidate.
Gestisce gli oggetti annidati e gli array di oggetti?
Sì. Ogni oggetto annidato diventa una classe con nome propria, e le forme identiche vengono deduplicate in un'unica classe riutilizzata da ogni campo. Gli array di oggetti vengono uniti chiave per chiave così ottieni una sola classe per l'elemento, con le chiavi assenti in alcuni elementi contrassegnate come Optional. Le classi figlie vengono sempre emesse prima delle classi che le utilizzano.
Come vengono gestite le parole chiave di Python e le chiavi non identificatori?
Una chiave JSON che è una parola chiave di Python (class, from, import) riceve un trattino basso finale (class_). Le chiavi con trattini, spazi o una cifra iniziale vengono ripulite in identificatori validi nelle modalità dataclass e Pydantic. In modalità TypedDict, qualsiasi dict che contiene una chiave non identificatore viene emesso con la sintassi funzionale TypedDict('Name', {...}) così la chiave esatta come "first-name" viene preservata.
Come uso il dataclass generato per analizzare JSON?
Per un oggetto piatto, json.loads seguito da Root(**data) funziona direttamente. Per le strutture annidate, dataclass non ricorre automaticamente — costruisci tu stesso gli oggetti figli, usa una libreria come dacite o pydantic.dataclasses, oppure passa questo strumento alla modalità Pydantic v2, dove Root.model_validate(json.loads(text)) analizza l'intero albero in una sola chiamata.
I miei dati JSON sono privati e al sicuro?
Sì. La conversione avviene al 100% nel tuo browser con JavaScript. Il tuo JSON — inclusi token, ID o dati dei clienti — non lascia mai la pagina e non viene mai inviato a un server.
Lo strumento è gratuito? Serve un account?
È completamente gratuito, senza registrazione, senza limiti e senza pubblicità che ingombra lo spazio di lavoro. Funziona offline una volta caricata la pagina.

Strumenti correlati

Vedi tutti gli strumenti →