Che cosa fa questo strumento
Un campione JSON diventa struct Go, una per oggetto.
{ "id": 1, "firstName": "Ada", "address": { "city": "Paris" } }
type Root struct {
Id int `json:"id"`
FirstName string `json:"firstName"`
Address Address `json:"address"`
}
type Address struct {
City string `json:"city"`
}
Le colonne sono allineate come le allinea gofmt — nome, tipo, tag. Nessuno legge Go non formattato, e incollare questo in un file e lanciare gofmt non dovrebbe cambiare nulla.
Quell’allineamento è recente: i campi uscivano separati da un solo spazio. Una piccola cosa, e restava un’uscita che non somigliava al linguaggio di cui si dice.
I nomi sono esportati, le chiavi vivono nel tag
encoding/json ignora del tutto i campi non esportati: un campo minuscolo non decodifica nulla e non codifica nulla, senza dire una parola. Perciò ogni campo è esportato — PascalCase, con una F davanti quando la chiave comincia con una cifra (2fa dà F2fa) — e il tag porta la chiave originale, intatta.
Due chiavi che producono lo stesso nome Go — user-name e userName — restano distinte grazie a un suffisso numerato. I tag restano diversi: ogni campo corrisponde ancora alla propria chiave.
omitempty omette più di quanto si creda
L’opzione aggiunge ,omitempty a ogni tag. Vale solo in codifica e non distingue «assente» da «zero»: 0, "", false, uno slice vuoto e una map nil spariscono tutti dall’uscita.
Va benissimo per un filtro facoltativo, ed è sbagliato per un punteggio che può valere zero legittimamente. Dove la differenza conta, la risposta abituale è un puntatore — *int — che codifica null per nil e uno zero vero altrimenti.
I tipi, e ciò che un campione non può dire
- Gli interi diventano
int, nonint64. Su ogni piattaforma a 64 bit è la stessa cosa; un valore che la supera fallisce rumorosamente in decodifica invece di essere troncato in silenzio. nulle i valori ignoti diventanoany. Un array vuoto diventa[]any, uno misto pure, salvo quando mescola interi e decimali — lì[]float64copre entrambi.- Nessun campo è un puntatore e nessuno è opzionale, perché un campione non può mostrarlo. Una chiave a volte assente è un
*Tche aggiungi tu, ed è la prima cosa da verificare contro un secondo carico.
Privato per progettazione
Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.