Nouplo

JSON a tipi

Un campione da una parte, un tipo dall’altra.

Gli esempi sostituiscono temporaneamente i dati e le impostazioni. Puoi ripristinare il lavoro precedente.

0 caratteri
Risultato
Incolla o scrivi qui sopra per vedere il risultato.

I tuoi file restano sul tuo dispositivo

Questo strumento viene eseguito interamente nel tuo browser. Ciò che incolli viene elaborato sul tuo dispositivo e non viene mai inviato a un server, quindi puoi usarlo in sicurezza con token, chiavi e testi non pubblicati.

Esempio

Esempio: anagrafica clienti in JSON a struct Go, con partita IVA o codice fiscale

Un gestionale per la fatturazione elettronica scritto in Go legge i clienti esportati in JSON. Si incollano due clienti fittizi: Rossi Impianti S.r.l. di Milano, con partita IVA e codice SDI e PEC null, e Bianchi Mario, persona fisica di Torino, con codice fiscale e PEC. Impostazioni: Go, nome Cliente, rientro Tabulazione.

  1. L’array iniziale è descritto da un solo struct, Cliente, letto da entrambi gli elementi; indirizzo ha campi propri e diventa *Indirizzo.
  2. partita_iva e codice_sdi ci sono solo per la società, codice_fiscale solo per la persona: tutti e tre escono string con omitempty nel tag json, e CodiceFiscale va in fondo perché compare per ultimo.
  3. pec è null nel primo cliente e una stringa nel secondo: diventa *string, un puntatore che può essere nil, così una PEC assente non si confonde con una stringa vuota.
  4. cap resta string perché nel JSON è tra virgolette: un CAP come 00118 di Roma non perde lo zero iniziale.
Campo Nei due clienti Go
ragione_sociale in entrambistring
partita_iva solo Rossi Impiantistring, omitempty
codice_sdi solo Rossi Impiantistring, omitempty
codice_fiscale solo Bianchi Mariostring, omitempty
pec null, poi un indirizzo PEC*string
indirizzo via, cap, citta, provincia*Indirizzo
cap "20100", "10121"string

2 struct, Cliente e Indirizzo, con i nomi dei campi in maiuscolo come vuole Go (RagioneSociale, PartitaIva, CodiceSdi). Le colonne di nomi, tipi e tag escono già allineate come le scrive gofmt. Da rifinire a mano: PartitaIVA e CodiceSDI sono la grafia più usata in Go per le sigle.

Come funziona

  1. Incolla una risposta vera. Un record reale vale più di uno inventato.
  2. Scegli TypeScript, Go o Zod.
  3. Dai un nome al tipo principale, o lascia Root.
  4. Copia il risultato e rileggilo: dedurre da un campione dà una prima bozza, non una specifica.

Domande frequenti

Guarda tutti gli elementi dell’array o solo il primo?
Tutti. [{a:1},{a:1,b:2}] rende b opzionale invece di far finta che non esista: proprio l’errore che rende fastidiosi i tipi generati due settimane dopo.
Che cosa fa con null?
Allarga anziché restringere. Un campo che è stato null una volta è un campo che può essere null: in TypeScript diventa un’unione, in Go un puntatore. È quasi sempre quel che l’API fa davvero.
Posso fidarmi del risultato?
Come punto di partenza. Un campione non può dirti che un campo è un enum, che un numero è intero o che una stringa è una data: rileggi e stringi. Risparmia la digitazione, non il ragionamento.
E se il JSON comincia con un array?
Il tipo descrive allora un solo elemento, con il nome che scrivi, e vengono letti tutti gli elementi: un campo che manca in alcuni diventa facoltativo. In TypeScript un’ultima riga aggiunge il tipo della lista, per esempio ClienteList = Cliente[]; in Go si usa []*Cliente.
Perché i numeri escono come number, o float64 in Go, e mai come interi?
Perché un campione non dimostra che un numero sia sempre intero: il 24 di oggi può diventare 24.5 domani. TypeScript e Zod scrivono number, Go scrive float64. Se un id o una quantità sono sempre interi, cambiali in int o int64 in Go, o aggiungi .int() in Zod.
Viene inviato qualcosa a un server?
No. Gira nel browser: quello che incolli resta sul tuo computer.

Strumenti correlati