DevToolPal
IT

Da JSON a struct Go

Genera struct Go con tag json da un esempio JSON, con struct annidate con nome o in linea e omitempty.

Eseguito in locale, mai caricato

Opzioni

Oggetti annidati

JSON

0 caratteri · 0 B

Go

0 caratteri · 0 B

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

  1. Incolla JSON nel campo di input, carica un file .json o fai clic su Esempio.
  2. Imposta il nome del tipo radice e scegli come scrivere gli oggetti annidati, quali campi ricevono omitempty e se i campi nullable usano puntatori.
  3. Copia il codice Go o scaricalo come file .go e aggiungi la riga package.

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.Time quando 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.