Incolla il Python a sinistra e clicca "Converti" — lo trasformiamo in JSONIncolla codice Python

Cosa fa questo tool

Se ti è mai capitato di dover trasformare un dict Python o una dataclass in un payload JSON per una chiamata API, una fixture di test o un pezzo di documentazione, sai che diventa subito noioso — le virgolette vanno girate, True/False diventano true/false, None diventa null, e i valori datetime/Decimal vanno serializzati a mano. Incolla il Python qui e ottieni JSON valido, identico a quello che produrrebbe json.dumps o una chiamata a .model_dump_json() di Pydantic — senza che tu debba scrivere il collante.

Non è un semplice trova-e-sostituisci. Il convertitore capisce cosa fa davvero Python in fase di serializzazione: le stringhe con apici singoli diventano apici doppi, le tuple collassano in array JSON, set e frozenset diventano array anche loro, i valori datetime e date escono come stringhe ISO-8601 secondo l'RFC 8259, Decimal diventa un numero, e i membri Enum emettono il loro .value. Gli oggetti annidati vengono espansi sul posto, quindi una dataclass che contiene una lista di altre dataclass fa round-trip pulito.

I modelli Pydantic (sia v1 che v2) sono supportati. Gli alias di campo impostati con Field(alias=...) rinominano le chiavi nell'output, i campi Optional che valgono None sono preservati come null, e i tipi Literal/Union vengono emessi con il loro valore a runtime. Incolla pure un modulo intero con più classi — ognuna esce come entry al livello superiore.

Come si usa

Tre passaggi. Funziona uguale sia che incolli un dict da due righe o un modulo da 300.

1

Incolla il tuo Python (o prova l'esempio)

Butta il Python nell'editor di sinistra così com'è. Un dict letterale, una definizione di dataclass più istanza, un modello Pydantic, o più classi con tipi annidati — va bene tutto. Clicca Load Sample se vuoi vedere un input realistico.

Non serve togliere gli import o i decoratori. Lascia stare la formattazione PEP 8, i type hint e qualsiasi sintassi dataclass.

2

Clicca Converti

Clicca il pulsante verde Convert. Il tool legge il Python, costruisce il grafo di oggetti e lo serializza come farebbe json.dumps — con indentazione leggibile. Durante l'esecuzione vedi un breve indicatore di caricamento.

3

Copia il JSON

Il pannello di destra si riempie con JSON pretty-printed, valido secondo la specifica JSON. Copialo nel body della richiesta, nella tua fixture pytest, nell'esempio OpenAPI di FastAPI o nel file di config.

Quando serve davvero

Fixture di richieste API

Hai un modello Pydantic di richiesta e ti serve un body JSON di esempio per Postman, curl o uno Swagger. Incolli il modello, prendi il JSON, fatto.

Dati per pytest e unit test

Converti un'istanza di dataclass dal tuo file di test in un file JSON di seed per i test di integrazione o gli snapshot — senza bisogno di encoder custom.

Scaffolding di file di config

Una dataclass di settings con qualche decina di campi diventa un template JSON pronto da modificare, così non ti metti a battere parentesi graffe per la decima volta.

Tenere la documentazione allineata al codice

Generi esempi JSON per un README o un API reference direttamente dai modelli che hai già, così la documentazione non può sfasarsi dal codice.

Domande ricorrenti

Funziona sia con Pydantic v1 che v2?

Sì. Entrambi sono supportati, inclusi Field(alias=...), model_config, Field(default_factory=...) e i modelli annidati. Gli alias rinominano le chiavi nell'output, proprio come farebbe Pydantic stesso.

Come vengono gestiti datetime, Decimal e UUID?

datetime, date e time escono come stringhe ISO-8601. Decimal diventa un numero JSON (senza virgolette). UUID diventa una stringa esadecimale standard. bytes viene codificato in base64. Sono le convenzioni del modulo json di Python quando ti colleghi un encoder custom.

E Enum, Literal e Optional?

I membri Enum emettono il loro .value. Literal["a", "b"] emette la stringa a runtime. I campi Optional[X] che valgono None escono come JSON null invece di essere scartati — così la forma dell'output combacia con i type hint.

Posso incollare un modulo intero con più classi?

Sì. Ogni classe di primo livello con un'istanza nel modulo esce come entry a sé nel JSON. Le dataclass annidate e i modelli Pydantic vengono espansi sul posto, e i campi ereditati dalle classi padre sono inclusi.

Il mio codice viene salvato da qualche parte?

Il codice viene inviato al backend solo per essere convertito. Non lo logghiamo né lo persistiamo. Come con qualsiasi tool online, se quello che stai incollando è davvero sensibile, dacci un'occhiata prima.

E se il Python ha qualcosa di strano — lambda, generatori, file handle?

I valori non serializzabili (funzioni, generatori, socket aperti) escono come null invece di far saltare l'intera conversione. Se il sorgente ha un syntax error, sistema prima quelli evidenti — il parser tollera le stranezze di stile ma non può eseguire codice rotto.

Altri tool che potrebbero servirti

Python in JSON è solo un pezzo. Ecco i tool che si abbinano bene: