JSON Convertitore di strutture Go — Numio
Genera definizioni di struct Go da JSON usando un port di json-to-go, formattate con gofmt. Le chiavi diventano campi CamelCase esportati con tag json:"..."; gli oggetti annidati diventano struct anonime inline e null diventa any.
Scrivere una struct per decodificare con json.Unmarshal la risposta di un’API REST di terze parti.
Quando usarlo
- Scrivere una struct per decodificare con json.Unmarshal la risposta di un’API REST di terze parti.
- Tipi di richiesta e risposta di bootstrap per un gestore Go HTTP da payload di esempio.
Come si usa
- Incolla un oggetto o un array JSON nell'editor di sinistra.
- Leggere la struttura generata; il tipo root è sempre denominato AutoGenerated.
- Copialo nel tuo pacchetto, rinomina il tipo ed estrai le strutture inline in tipi con nome se li riutilizzi.
JSON
{
"id": 42,
"user_name": "ada",
"score": 9.5,
"active": true,
"deleted_at": null,
"tags": ["go", "json"],
"address": { "city": "Tokyo", "zip": "100-0001" }
}Vai a strutturare
type AutoGenerated struct {
ID int `json:"id"`
UserName string `json:"user_name"`
Score float64 `json:"score"`
Active bool `json:"active"`
DeletedAt any `json:"deleted_at"`
Tags []string `json:"tags"`
Address struct {
City string `json:"city"`
Zip string `json:"zip"`
} `json:"address"`
}Dettagli e limiti
La generazione viene eseguita nel browser. Non sono presenti impostazioni per il nome del tipo, le strutture inline o denominate o i tag.
Le iniziali sono in maiuscolo (id diventa ID) e snake_case diventa CamelCase, con la chiave originale mantenuta nel tag json.
I numeri interi diventano int (int64 quando sono grandi), i decimali float64. null, gli array vuoti e gli array misti diventano any o []any.
Quando gli oggetti in un array differiscono, le chiavi mancanti in alcuni ottengono ,omitempty.
FAQ
Posso convertire un array JSON alla radice?
Sì. Produce type AutoGenerated []struct{...}, unendo i campi di tutti gli oggetti dell’array.
Perché al mio campo null viene assegnato il tipo any?
Un valore null non contiene informazioni sul tipo. Sostituisci any con un puntatore come *string o *time.Time per mantenere il supporto nil.
Genera strutture annidate denominate?
No. Gli oggetti nidificati sono strutture anonime in linea. Spostali manualmente nei tipi con nome se è necessario farvi riferimento.