Che cosa fa questo strumento
Un campione JSON diventa classi Python, una per oggetto.
{ "id": 1, "firstName": "Ada", "address": { "city": "Paris" } }
from pydantic import BaseModel, Field
class Address(BaseModel):
city: str
class Root(BaseModel):
id: int
first_name: str = Field(alias="firstName")
address: Address
I figli sono dichiarati per primi: una classe deve esistere prima che un’altra annoti un campo con essa. L’uscita punta a un Python moderno — list[str] e int | str sono scritti direttamente, il che richiede 3.10 o successivo.
Tre stili, tre costi diversi
| stile | che cosa ti dà | che cosa costa |
|---|---|---|
| Pydantic | la validazione al confine, alias per le chiavi rinominate | una dipendenza, e oggetti non semplici |
| dataclass | un contenitore semplice, sola libreria standard | nessuna validazione e nessun alias per una chiave rinominata |
| TypedDict | annotazioni per i dizionari che hai già | nulla a runtime — e quindi nessun controllo |
La struttura è identica nei tre; cambia quanto il tipo fa per te.
Le parole riservate non rompono più il file
{"class": 1} produceva:
class Root(BaseModel):
class: int
che non è Python — il file non si analizza nemmeno. Le parole riservate prendono ora un trattino basso, e l’alias Pydantic conserva la chiave:
class_: int = Field(alias="class")
Era un difetto vero, trovato scrivendo questa pagina e corretto. TypedDict se la cava altrimenti: una chiave che non può essere un nome di attributo fa passare l’intera definizione alla sintassi funzionale, Root = TypedDict('Root', {"class": int}), dove le chiavi sono stringhe e tutto passa.
Ciò che un campione non può dirti
Nulla è | None e nulla ha un valore predefinito: ogni campo è obbligatorio, perché il campione lo conteneva. Un null dà il tipo None, che non accetta altro — se il campo è «una stringa, a volte nulla», la modifica è str | None, e = None se può mancare.
Due chiavi che danno lo stesso snake_case — fooBar e foo_bar — restano distinte con un suffisso numerato invece di fondersi, e l’alias registra quale fosse quale.
Privato per progettazione
Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.