Sviluppatore / JSON

JSON a struct Go

Incolla un esempio JSON e ottieni definizioni di struct Go con campi esportati, gli inizialismi attesi dai linter Go e tag json, pronti da incollare nel codice.

JSON a struct Go: Il convertitore legge il JSON nel browser e crea una struct per ogni oggetto. Le chiavi diventano nomi esportati in CamelCase, con inizialismi come ID, URL e HTTP in maiuscolo, come raccomanda golint; ogni campo conserva la chiave originale in un tag json, formattato come farebbe gofmt. Gli oggetti in un array vengono uniti: una chiave assente in alcuni di essi riceve omitempty, mentre una chiave che a volte è null diventa un puntatore. I numeri interi diventano int64, a meno che nella stessa posizione non compaia un numero decimale, nel qual caso diventano float64. Funziona al 100% localmente nel browser, senza caricare file sul server.

Esecuzioni
Nel browser
Costo
Gratuito · senza registrazione
Disponibilità
Pronto all'uso
Da JSON a struct GoElaborazione locale

Funziona interamente nel browser

Vai

type User struct {
	ID        int64    `json:"id"`
	UserName  string   `json:"user_name"`
	AvatarURL string   `json:"avatar_url"`
	Score     float64  `json:"score"`
	Tags      []string `json:"tags"`
	Address   Address  `json:"address"`
}

type Address struct {
	City    string `json:"city"`
	ZipCode string `json:"zip_code"`
}

Le chiavi mancanti in alcuni oggetti di un array ricevono omitempty; le chiavi che a volte sono null diventano puntatori. Verifica i tipi nella documentazione della tua API: un esempio mostra solo ciò che contiene.

Da un esempio a un tipo

Go decodifica JSON in struct con encoding/json, associando ogni chiave a un campo tramite il relativo tag json oppure, in assenza di tag, tramite il nome senza distinguere maiuscole e minuscole. Vengono compilati solo i campi esportati, cioè quelli che iniziano con una lettera maiuscola: ecco perché ogni campo qui è scritto con l'iniziale maiuscola e conserva la chiave originale nel proprio tag.

Un esempio mostra solo ciò che contiene. Un elenco di utenti in cui a uno manca l'email comunica al convertitore che email è opzionale; un singolo oggetto non può farlo. Quando possibile, incolla in un array diversi oggetti rappresentativi e verifica il risultato con la documentazione dell'API. Il formattatore JSON aiuta prima a individuare la struttura di una risposta lunga.

Altri linguaggi e schemi

Lo stesso esempio può diventare interfacce TypeScript con il convertitore da JSON a TypeScript, per un front end che legge la stessa API, oppure uno schema JSON per validare i payload all'ingresso del sistema.

Come usarlo

  1. Incolla un oggetto o un array JSON, ad esempio una risposta API.
  2. Assegna un nome al tipo principale e scegli se usare struct separate o annidate.
  3. Copia il codice Go.

Privacy e limitazioni

Il tuo JSON viene convertito nel browser e non viene mai caricato.

Strumenti correlati

Domande frequenti

Perché user_id diventa UserID e non UserId?

Lo stile Go scrive gli inizialismi usando un'unica combinazione di maiuscole e minuscole, quindi UserID, APIKey e AvatarURL. Il convertitore usa l'elenco degli inizialismi di golint, il linter che ha diffuso questa regola.

Quando un campo riceve omitempty o diventa un puntatore?

Quando l'esempio è un array di oggetti e una chiave è assente in alcuni di essi, il campo riceve omitempty: durante la conversione in JSON viene quindi omesso se vuoto. Quando una chiave è null in alcuni oggetti, il campo diventa un puntatore, così nil può rappresentare null. Puoi anche aggiungere omitempty a ogni campo.

Perché int64 e float64?

JSON ha un unico tipo numerico. Un valore scritto senza virgola decimale diventa int64, mentre qualsiasi valore con una parte frazionaria diventa float64. Se un ID può superare 2^53 o in realtà è una stringa mascherata, modifica manualmente il tipo: un esempio mostra solo i valori che contiene.

Cosa succede con null o gli array vuoti?

Quando non ci sono informazioni sufficienti, un campo che è sempre null o un array vuoto riceve il tipo any (interface{}), che accetta qualsiasi valore. Sostituiscilo con il tipo reale quando lo conosci.

Strumento gratuito · nel browser esecuzioni · senza account