Vai al contenuto

Convertire JSON in TypeScript, Go, Python e altri linguaggi

Incolla degli esempi JSON e ottieni interfacce TypeScript, schemi Zod, struct Go e tipi Python, Java, C#, Kotlin, Swift e Rust, generati nel tuo browser.

Più esempi (uno dopo l'altro o in formato JSON Lines) e gli oggetti contenuti negli array vengono uniti: le chiavi che mancano in alcuni punti diventano opzionali, i valori null diventano nullable.

TypeScript
Incolla un esempio e premi Genera tipi.
Dichiara come
Funziona nel tuo browser · nessun caricamentoCome funziona

Come usare Da JSON a tipi

  1. 1

    Incolla gli esempi JSON

    Incolla una risposta, un array di record o più risposte una dopo l'altra; l'esempio mostra due utenti uniti.

  2. 2

    Scegli il linguaggio

    Scegli TypeScript, Zod, Go, Python, Java, C#, Kotlin, Swift o Rust e le opzioni di stile relative.

  3. 3

    Dai un nome al tipo radice

    Imposta il nome del tipo di primo livello, per esempio User o OrderResponse.

  4. 4

    Genera e copia

    Premi Genera tipi, poi copia il codice o scaricalo; le modifiche lo rigenerano automaticamente.

Limiti e Pro

Gratis e senza registrazione: 9 linguaggi di output con 3 stili Python, un numero qualsiasi di esempi uniti e file fino a 20 MB, con la generazione che si interrompe dopo 30 secondi.

Pro elimina la pubblicità; il generatore è lo stesso in ogni piano. Scopri Pro

Informazioni su Da JSON a tipi

Scrivere a mano i tipi per la risposta di un'API è lento e soggetto a errori, soprattutto quando il payload è annidato su tre livelli. Incolla uno o più esempi JSON e questo generatore ricava la struttura e scrive definizioni pronte da incollare in nove varianti: interfacce o type alias TypeScript, TypeScript con schemi Zod per la validazione a runtime, struct Go con tag json, dataclass, TypedDict o modelli Pydantic v2 per Python, record Java con annotazioni Jackson, classi C# per System.Text.Json, data class Kotlin per kotlinx.serialization, struct Swift Codable e struct Rust per serde.

Un solo esempio raramente mostra tutti i campi, quindi il generatore unisce tutti quelli che gli dai. Puoi incollare più documenti uno dopo l'altro o in formato JSON Lines, oppure un array di oggetti: una chiave assente in alcuni oggetti diventa opzionale, una chiave a volte null diventa nullable, un intero che a volte è decimale diventa float e i valori davvero misti diventano un'unione o il tipo JSON dinamico del linguaggio. Gli oggetti annidati ottengono tipi con nome proprio – orders diventa Order, addresses diventa Address – e le strutture identiche vengono generate una sola volta e riutilizzate. Gli oggetti le cui chiavi sono numeri, UUID o date vengono trasformati in mappe.

I nomi dei campi sono convertiti secondo la convenzione di ciascun linguaggio e le chiavi JSON che differiscono, come first-name o class, vengono ricollegate con l'annotazione, l'alias o i CodingKeys corretti. Commenti e virgole finali nell'esempio sono tollerati.

L'output descrive gli esempi che fornisci: il generatore non può conoscere campi o valori che non compaiono nei tuoi esempi, quindi confrontalo con la documentazione della tua API prima di usarlo.

Privacy

Gli esempi vengono analizzati e il codice viene generato da un Web Worker in questa scheda, quindi le risposte delle API con dati personali o interni non vengono mai caricate. Le opzioni di linguaggio e di nomi sono salvate nella memoria locale; il JSON che incolli non viene conservato.

Funzionalità

Unisce molti esempi

Le chiavi mancanti diventano opzionali e i valori null nullable in tutti gli esempi che incolli.

9 linguaggi

TypeScript, Zod, Go, Python, Java, C#, Kotlin, Swift e Rust con nomi nello stile di ciascun linguaggio.

Mappatura delle chiavi inclusa

Tag json, alias, @SerialName, @JsonProperty e CodingKeys mantengono i nomi JSON originali.

Da JSON a tipi: domande frequenti

Come decide quali campi sono opzionali?
Un campo è opzionale quando almeno uno degli oggetti in quella posizione non contiene la chiave. Se incolli un solo oggetto, ogni campo è obbligatorio, perché nulla indica il contrario. Incolla più risposte reali o un array di record per far vedere al generatore quali chiavi compaiono e quali no. Rendi opzionale ogni campo serve per payload parziali o di patch.
Che succede se un valore a volte è null?
Il campo diventa nullable: string | null in TypeScript, un puntatore in Go, str | None in Python, String? in Kotlin e Swift, Option<String> in Rust e un tipo boxed o nullable in Java e C#. Un campo null in ogni esempio non ha un tipo da ricavare, quindi diventa il tipo sconosciuto o JSON dinamico del linguaggio.
Perché i miei interi sono diventati float?
Se un esempio ha 7 e un altro ha 7.5 per lo stesso campo, il tipo deve contenere entrambi, quindi diventa float o double. Anche i numeri scritti con il punto decimale, come 10.0, contano come decimali. In TypeScript entrambi sono number; con Zod un campo solo intero viene controllato con z.number().int().
È uguale a quicktype?
Risolve lo stesso problema con un generatore proprio, che funziona interamente nel tuo browser e aggiunge qualcosa: tre stili Python, tra cui TypedDict, schemi Zod e l'unione di più documenti incollati. quicktype supporta più linguaggi e legge JSON Schema. Per i nove linguaggi qui presenti, l'output è pensato per compilare senza helper di runtime aggiuntivi.
Riconosce date, enum o UUID?
No. Le stringhe restano stringhe, perché pochi esempi non possono provare che ogni valore futuro sarà una data o uno di un insieme fisso. Cambia a mano il tipo generato in Date, time.Time, datetime, un enum o un tipo UUID dove la tua API lo garantisce. Fanno eccezione gli oggetti con chiavi UUID, numeri o date: diventano mappe.