UTILS.
100% nel browser
🐍

Da JSON a modello Pydantic

Trasforma un JSON di esempio in classi modello Pydantic v2 per Python, con opzioni per output @dataclass o TypedDict e aliasing dei campi in snake_case.

output

Informazioni su questo strumento

Lo strumento Da JSON a modello Pydantic converte un JSON di esempio incollato in classi modello Python. Gli sviluppatori Python e FastAPI creano continuamente modelli Pydantic a partire da risposte API di esempio, e questo convertitore lo fa istantaneamente nel browser. Analizza il tuo JSON, inferisce i tipi Python ricorsivamente ed emette una classe per oggetto: le stringhe diventano str, le stringhe data-ora ISO datetime, le stringhe di sola data date, gli interi int, gli altri numeri float, i booleani bool, gli array List[T] e gli oggetti annidati le proprie classi modello nominate in PascalCase.

Tutta l'analisi e la generazione avvengono localmente con JSON.parse e semplice JavaScript, quindi nulla di ciò che incolli lascia la tua macchina. Le classi figlie vengono emesse prima delle classi che le referenziano (ordine topologico) e l'intestazione importa solo ciò che viene effettivamente usato — BaseModel e Field da pydantic, Optional / List / Union / Any da typing e datetime / date quando pertinenti. from __future__ import annotations è sempre incluso così i riferimenti in avanti funzionano indipendentemente dall'ordine.

Le chiavi mancanti in alcuni oggetti fratelli, o viste come null, diventano Optional[T] = None. L'interruttore della modalità di output passa tra Pydantic v2 BaseModel (predefinito), @dataclass della libreria standard e typing.TypedDict. Attiva i campi snake_case per rinominare le chiavi camelCase o non valide e aggiungere automaticamente Field(alias="originalKey") così il modello analizza comunque il JSON originale. Copia il codice o scaricalo come file .py.

Domande frequenti

Quali tipi Python vengono inferiti?
string in str, data-ora ISO in datetime, sola data in date, intero in int, numero non intero in float, booleano in bool, array in List[T] con T unito dagli elementi, e oggetto in una classe BaseModel annidata. I valori null o mancanti diventano Optional[T] = None.
Posso ottenere una dataclass o un TypedDict invece?
Sì. L'interruttore della modalità di output emette Pydantic v2 BaseModel (predefinito), una @dataclass della libreria standard con l'import dataclasses, o una classe typing.TypedDict. L'inferenza dei tipi è la stessa; cambiano solo il guscio della classe e gli import.
Come vengono gestite le chiavi non-identificatore o camelCase?
Con i campi snake_case attivi, una chiave come userName diventa user_name più Field(alias="userName") così fa comunque round-trip. Le chiavi che sono parole chiave Python o identificatori non validi ricevono sempre un alias così il codice generato è valido.
Le classi sono ordinate correttamente?
Sì. Le classi figlie annidate vengono dichiarate prima delle classi genitrici che le usano, e from __future__ import annotations è incluso, così i modelli compilano senza errori di riferimento in avanti.

Altri strumenti