nicetool.dev logo

Da JSON a TypeScript

Incolla una risposta API o un oggetto JSON. I tipi si aggiornano mentre scrivi.

JSON
Codice generato
export interface User {
  id: number;
  name: string;
  email: string;
  score: number;
  active: boolean;
  tags: string[];
  address: Address;
  orders: Order[];
}

export interface Address {
  city: string;
  postcode: null;
}

export interface Order {
  id: number;
  total: number;
  paidAt?: string;
  coupon?: string;
}

Perché generare tipi da JSON?

API, file di configurazione e webhook restituiscono JSON, ma TypeScript, Go e i validatori a runtime hanno bisogno di una struttura esplicita. Scrivere a mano le interfacce per una risposta grande è lento e porta a errori: un campo che a volte manca, un numero che a volte è null o un array annidato di oggetti si descrivono male facilmente. Questo strumento legge un esempio reale e ne deduce la struttura. Gli array di oggetti vengono uniti, quindi le chiavi presenti solo in alcuni elementi diventano opzionali, quelle a volte null diventano nullable e ogni oggetto annidato riceve il proprio nome di tipo.

Funzionalità

  • • Interfacce o alias di tipo TypeScript con campi opzionali (?)
  • • Struct Go con tag json, omitempty e nomi idiomatici (ID, URL)
  • • Schemi Zod con tipi TypeScript dedotti, ordinati in modo che i riferimenti si risolvano
  • • Unisce array di oggetti e rileva null, valori misti e interi
  • • Mette tra virgolette le chiavi non valide come identificatori, ad esempio "first-name"

I tuoi dati restano privati

L'analisi e la generazione del codice avvengono nel browser. Le risposte API con dati reali dei clienti non lasciano il tuo computer.

Nessun upload, funziona offline.

Come usare: Da JSON a TypeScript

  1. 1

    Incolla un esempio JSON, ad esempio una risposta copiata dalla scheda Rete del browser, da Postman o da curl. Più elementi hanno gli array, meglio vengono rilevati i campi opzionali.

  2. 2

    Scegli l'uscita: interfacce TypeScript, struct Go o schemi Zod. Per TypeScript puoi passare agli alias di tipo.

  3. 3

    Imposta il nome del tipo radice, come User o OrderResponse. Gli oggetti annidati prendono il nome della chiave e gli elementi degli array il singolare (orders diventa Order).

  4. 4

    Controlla il risultato, sistema ciò che l'esempio non poteva rivelare (ad esempio una stringa che in realtà è una data o un enum) e copialo nel codice.

Esempi pratici

Tipizzare una risposta REST

Incolla il JSON di GET /api/users/42 e ottieni un'interfaccia User con un tipo Address annidato, pronta per fetch o axios.

Client Go per una API esterna

Genera struct con tag json per il payload di un webhook di Stripe o GitHub. Le chiavi opzionali ricevono omitempty e gli oggetti annidati diventano tipi separati.

Validazione a runtime con Zod

Trasforma un corpo di richiesta di esempio in uno schema Zod e usa schema.parse() in un route handler di Next.js per rifiutare input malformati, con z.infer per il tipo statico.

File di configurazione

Incolla una configurazione JSON per ottenere un'interfaccia tipizzata, così l'editor completa le chiavi e segnala gli errori di battitura.

Domande frequenti

Come vengono rilevati i campi opzionali?+

Quando la radice o un valore annidato è un array di oggetti, tutti gli elementi vengono uniti. Una chiave assente in almeno un elemento diventa opzionale (? in TypeScript, omitempty in Go, .optional() in Zod).

Cosa succede con i valori null?+

Una chiave null in alcuni elementi e stringa in altri diventa string | null (nullable() in Zod, *string in Go). Una chiave sempre null nel campione resta null, perché il suo vero tipo non si può conoscere.

Perché un numero diventa int64 in Go?+

I numeri interi del campione diventano int64 e i decimali float64. Se un campo li mescola, viene allargato a float64 (number in TypeScript).

Rileva date, enum o UUID?+

No. JSON non ha tipi data o enum, quindi compaiono come string. Raffinali a mano, ad esempio con z.string().datetime() o un'unione di valori letterali.