Cosa fa
Il convertitore da JSON a Go legge un esempio JSON e scrive definizioni di struct Go con tag json, pronte per encoding/json. Incolla una risposta dell’API che chiami e ottieni tipi da usare subito con json.Unmarshal, senza scrivere a mano ogni campo e ogni tag.
Il convertitore esamina ogni valore dell’esempio. Gli oggetti annidati diventano struct proprie, tutti gli elementi di un array vengono uniti in un tipo di elemento e i campi che mancano in alcuni elementi o a volte sono null vengono riconosciuti come opzionali. L’output è allineato come farebbe gofmt.
Come si usa
- Incolla JSON nel campo di input, carica un file
.jsono fai clic su Esempio. - Imposta il nome del tipo radice e scegli come scrivere gli oggetti annidati, quali campi ricevono
omitemptye se i campi nullable usano puntatori. - Copia il codice Go o scaricalo come file
.goe aggiungi la rigapackage.
Il JSON non valido viene segnalato con la riga e la colonna del problema.
Esempio
Questo JSON:
{ "id": 7, "user_name": "ada", "tags": ["admin"], "profile": { "avatar_url": "https://example.com/a.png" } }
diventa queste struct:
type Root struct {
ID int `json:"id"`
UserName string `json:"user_name"`
Tags []string `json:"tags"`
Profile Profile `json:"profile"`
}
type Profile struct {
AvatarURL string `json:"avatar_url"`
}
Suggerimenti
- Un solo esempio mostra solo ciò che contiene. Se un valore può essere un numero o una stringa, includi entrambi oppure metti più esempi in un array perché vengano uniti.
- I timestamp arrivano come stringhe. Cambia tu il tipo in
time.Timequando il formato è RFC 3339. - Gli oggetti con esattamente gli stessi campi condividono una struct, così l’output resta breve quando la stessa forma compare in più punti.
- Scrivi anche TypeScript? Il generatore da JSON a TypeScript usa la stessa deduzione per creare interfacce.
Domande frequenti
› Come vengono scelti i nomi dei campi?
Ogni chiave JSON diventa un nome Go esportato in PascalCase, con le sigle comuni in maiuscolo come si aspetta golint, quindi user_id diventa UserID e avatar_url diventa AvatarURL. La chiave originale resta nel tag json, così encoding/json associa i campi esattamente.
› Quali tipi Go vengono usati?
Le stringhe diventano string, i numeri interi int (o int64 quando un valore non sta in 32 bit), i decimali float64 e i booleani bool. Gli array diventano slice, gli oggetti vuoti map[string]any e i valori solo null o che mescolano più tipi diventano any.
› Che differenza c'è tra struct con nome e in linea?
La modalità con nome scrive ogni oggetto annidato come tipo a sé, come Address o Order, più facile da riutilizzare e testare. La modalità in linea mette tipi struct anonimi direttamente nel genitore e tiene tutto in un'unica dichiarazione, come fanno molti convertitori rapidi.
› Quando viene aggiunto omitempty?
Per impostazione predefinita solo ai campi opzionali, cioè quelli che mancano in alcuni oggetti di un array o a volte sono null. Puoi anche aggiungerlo a tutti i campi o a nessuno. Attiva i puntatori per distinguere un valore mancante o null da un valore zero.
› Il mio JSON viene caricato?
No. Le struct vengono generate nel browser e nulla viene inviato a un server.