Vai al contenuto
100% locale

JSON a classe di dati Python

Converti un esempio JSON in classi Python tipizzate — dataclass, Pydantic, TypedDict o NamedTuple.

Ingresso
Uscita

JSON a classe di dati Python

Incolla JSON o un array e questo strumento deduce automaticamente i tipi e genera classi Python con annotazioni complete. Scegli lo stile: @dataclass, Pydantic BaseModel per la convalida, TypedDict per codice basato su dizionari o NamedTuple per record immutabili. Gli oggetti annidati diventano loro proprie classi nell'ordine corretto; oggetti con forma identica riutilizzano una singola classe invece di duplicarsi.

Le opzioni controllano se il codice è conservatore o moderno. «Facoltativo per campi null» converte null in tipi Optional anziché None; «Aggiungi valori predefiniti» consente di omettere campi durante la creazione di un'istanza. «Alias per nomi di campo non validi» gestisce chiavi JSON non valide e preserva la chiave originale tramite metadati del campo o Pydantic Field(alias=...). «Usa list[T] invece di List[T]» commuta tra generici moderni di PEP 585 e typing.List più vecchio, mentre le annotazioni future abilitano la sintassi X | None / X | Y.

L'inferenza distingue tra stringhe, interi, float e booleani, fonde il contenuto array misto in Union e assegna agli array root un nome RootItem con alias Root = list[RootItem]. I numeri senza punto decimale si leggono come int — non c'è modo di recuperare «36.0» dopo l'analisi. Tutto viene eseguito localmente; il tuo JSON e il codice Python generato non lasciano mai il tuo dispositivo.

FAQ

Quali stili di output sono supportati?
Quattro: @dataclass (stile libreria standard), Pydantic BaseModel (per la convalida e l'analisi JSON), TypedDict (annotazioni di tipo su un dizionario semplice senza classe runtime) e NamedTuple (record immutabili simili a tuple).
Come vengono gestiti gli oggetti annidati e gli array di oggetti?
Ogni forma di oggetto distinta diventa la sua propria classe, denominata in base al campo che la contiene e definita prima della classe che la referenzia. Gli oggetti con un set identico di campi e tipi riutilizzano una classe invece di duplicare — un array di record della stessa forma genera una singola classe di elemento.
Cosa succede alle chiavi JSON che non sono identificatori Python validi?
Vengono ripulite in un nome di attributo valido (ad esempio, «first-name» → first_name). Con «Alias per nomi di campo non validi» attivato, la chiave originale viene preservata tramite un alias nativo (metadati del campo in dataclass, Field(alias=...) in Pydantic) o un commento finale per TypedDict e NamedTuple, che non hanno un meccanismo di alias integrato.
Può distinguere affidabilmente int e float?
Classifica ogni numero in base al fatto che abbia una parte frazionaria nel tuo esempio, ma JSON stesso non distingue int da float per i numeri interi — un valore inviato come 36.0 è indistinguibile da 36 una volta analizzato, quindi viene letto come int.
Il mio JSON viene caricato da qualche parte?
No. L'analisi e la generazione del codice vengono eseguite completamente nel tuo browser — il JSON che incolli e il Python che produce non lasciano mai il tuo dispositivo.