Da JSON a TypeScript — Anche Zod, Go, Python, Java, C#, Rust

Incolla un esempio JSON e ottieni interfacce TypeScript, uno schema Zod, un JSON Schema o tipi per Go, Python, Java, C#, Kotlin, Swift e Rust.

Caricamento del generatore di tipi (circa 1 MB, solo la prima volta)…

I tipi vengono dedotti solo dall'esempio. Un campo null nel tuo esempio diventa null o any; incolla un esempio più completo (o un array di più record) per tipi più precisi.

Funziona interamente nel browser. Il tuo JSON non viene mai caricato, quindi puoi usarlo tranquillamente con risposte API reali. Sfoglia tutti gli strumenti gratuiti.

Hai trovato un problema o qualcosa che potrebbe andare meglio? Leggiamo ogni messaggio e sistemiamo le cose in fretta.

Questo convertitore gratuito da JSON a TypeScript legge un esempio JSON, come una risposta API o un file di configurazione, e scrive le interfacce TypeScript corrispondenti, con un tipo con nome per ogni oggetto annidato. Dallo stesso input ottieni anche uno schema Zod, un JSON Schema, struct Go, dataclass Python o modelli Pydantic, e classi per Java, C#, Kotlin, Swift e Rust, così smetti di scrivere a mano i nomi dei campi.

L'inferenza dei tipi usa quicktype, il motore open source alla base di quicktype.io e dell'estensione per editor "Paste JSON as Code", eseguito nel tuo browser. Unisce tutti gli oggetti di un array, quindi un campo presente solo in alcuni record diventa facoltativo. Può dedurre solo da ciò che vede: un campo che nel tuo esempio è null viene tipizzato come null, e un array vuoto come array di qualsiasi cosa. Per tipi più precisi, incolla un esempio con valori reali o più record.

Come si usa

  1. Incolla un oggetto JSON o un array di oggetti. All'inizio viene caricato un record utente di esempio.
  2. Scegli l'output: interfacce TypeScript, alias di tipo, Zod, JSON Schema, Go, Python, Java, C#, Kotlin, Swift o Rust.
  3. Imposta il nome del tipo radice (ad esempio User o OrderResponse). I tipi annidati prendono il nome dalle loro chiavi.
  4. Seleziona "Rendi facoltative tutte le proprietà" per payload parziali come i body di PATCH. Deseleziona "Solo tipi" per ottenere gli helper di serializzazione nei linguaggi che li supportano.
  5. Copia il codice o scaricalo come file con l'estensione giusta.

Domande frequenti

Come si converte un JSON in un'interfaccia TypeScript?

Incolla il JSON nella casella con TypeScript (interfacce) selezionato. Ogni oggetto diventa un'interfaccia esportata: le stringhe diventano string, i numeri number, i booleani boolean, gli array T[], e gli oggetti annidati ottengono una propria interfaccia con il nome della chiave, ad esempio address → Address. Copia il risultato in un file .ts e importalo dove analizzi la risposta.

Meglio un'interfaccia o un alias di tipo?

Per le forme degli oggetti sono quasi intercambiabili. Le interfacce si possono estendere e unire ridichiarandole, e molte guide di stile le preferiscono per i tipi di oggetto pubblici. Gli alias di tipo possono esprimere anche unioni e mapped type. L'opzione TypeScript (alias di tipo) produce `export type User = { ... }` se il tuo codice preferisce quello stile.

Come vengono rilevati i campi facoltativi?

Dall'esempio. Se il tuo JSON è un array di oggetti e una chiave manca in alcuni di essi, quella proprietà viene segnata come facoltativa (name?: string). Una chiave presente ma null in ogni record diventa null, e una che è stringa in alcuni record e null in altri diventa null | string. Per rendere facoltative tutte le proprietà, usa l'apposita opzione.

Perché usare uno schema Zod invece di un'interfaccia TypeScript?

Un'interfaccia esiste solo in fase di compilazione: non può verificare che un'API abbia davvero restituito ciò che ti aspetti. Uno schema Zod valida i dati a runtime (UserSchema.parse(data) genera un errore se un campo manca o ha il tipo sbagliato) e ti fornisce il tipo TypeScript tramite z.infer, così un'unica definizione copre entrambe le cose. Il codice Zod generato esporta sia lo schema sia il tipo inferito.

Rileva date e UUID?

Solo se attivi "Rileva date, UUID e numeri nelle stringhe". È disattivato per impostazione predefinita perché JSON non ha un tipo data: JSON.parse restituisce "2026-03-14T09:26:53Z" come stringa, quindi tipizzarlo come Date sarebbe sbagliato a meno che tu non usi anche il convertitore generato. Con il rilevamento attivo, Go ottiene time.Time, C# DateTimeOffset e Guid, e Python datetime e UUID.

Il mio JSON viene caricato?

No. La libreria quicktype viene scaricata una volta (circa 1 MB) e gira nella scheda del browser. Il tuo JSON non viene mai inviato da nessuna parte, quindi puoi incollare tranquillamente risposte API reali con dati personali.

Come i valori JSON corrispondono in ogni linguaggio

• Stringhe: string in TypeScript, Go, Swift e Kotlin (String), str in Python, String in Java e Rust, string in C#.

• Numeri interi: number in TypeScript, int64 in Go, int in Python, long in Java, Long in Kotlin, long in C#, Int in Swift, i64 in Rust. I numeri con il punto decimale diventano float64, float o double.

• Booleani: boolean, bool, Boolean, Bool, come li scrive ciascun linguaggio.

• Array: T[] in TypeScript, []T in Go, List[T] o list[T] in Python, List<T> in Java, Kotlin e C#, [T] in Swift, Vec<T> in Rust.

• Oggetti annidati: un tipo o una classe separati con un nome. Gli oggetti con molte chiavi dinamiche (come una mappa di ID) vengono riconosciuti e tipizzati come map o Record invece che con centinaia di campi.

• null: null in TypeScript, interface{} in Go, None in Python, object in C#. Dai al campo un valore reale nel tuo esempio per ottenere un tipo utile.

Ottenere tipi precisi da un esempio

L'inferenza vale quanto l'esempio. Tre abitudini fanno una grande differenza. Primo, incolla più record come array invece di un singolo oggetto, così emergono i campi facoltativi e i tipi misti. Secondo, sostituisci i null con valori realistici quando conosci il tipo, perché un campo null in ogni record non dà alcuna informazione. Terzo, rinomina il tipo radice con ciò che il payload è davvero (InvoiceResponse, non Root); i tipi annidati prendono il nome dalle chiavi e si leggono molto meglio nel codice quando la radice ha un nome significativo.

Se l'API è tua, la soluzione migliore a lungo termine è generare i tipi dal suo schema (OpenAPI o JSON Schema) anziché da esempi. L'output JSON Schema di questo strumento è un ragionevole punto di partenza per scrivere quello schema.

Strumenti gratuiti correlati

  • Formattatore JSON — Formatta, minifica e valida JSON, con gli errori di parsing localizzati per riga e colonna. Nel tuo browser, senza upload.
  • Da curl a codice — Incolla un comando curl, anche da "Copia come cURL" di Chrome, e ottieni la stessa richiesta in Python, JavaScript, Node, Go, PHP, Ruby, Java, C#, wget o HTTPie.
  • Validatore YAML — Valida il YAML con riga e colonna esatte di ogni errore e individua gli sbagli che i parser accettano in silenzio: booleani yes/no, tabulazioni, chiavi duplicate.
  • Decoder JWT — Decodifica header e payload di un JWT, leggi la scadenza in parole semplici, verifica firme HS, RS, PS ed ES o firma un nuovo token. Nulla esce dal browser.
  • Formattatore SQL — Trasforma SQL disordinato in query leggibili e indentate in modo coerente per PostgreSQL, MySQL, T-SQL, BigQuery e altri. Funziona nel browser.