JSON in Struttura Go
Incolla un campione JSON e ottieni definizioni di strutture Go che lo analizzano in modo pulito con encoding/json. I campi sono esportati (CamelCase), contrassegnati con le chiavi JSON originali, promossi a puntatori quando un valore potrebbe essere nullo, e gli oggetti annidati ottengono le proprie dichiarazioni di struttura nominate.
Come convertire JSON in struttura Go
-
1
Incolla il JSON
Un singolo campione è sufficiente. Campioni multipli migliorano l'inferenza dei valori nullabili.
-
2
Scegli il nome
PascalCase per i campi esportati è la convenzione Go. Scegli lo stile di abbreviazione (`URL` vs `Url`, `ID` vs `Id`).
-
3
Scegli la strategia opzionale
Usa puntatori per campi nullabili (la maggior parte idiomatica), o tag `omitempty`.
-
4
Copia le strutture
Una struttura radice più quelle annidate. Incolla in un file `.go` e premi `go build`.
Esempio di output
Per:
{ "first_name": "Alice", "age": 30, "email": null, "tags": ["admin"] }
Output:
type User struct {
FirstName string `json:"first_name"`
Age int `json:"age"`
Email *string `json:"email"`
Tags []string `json:"tags"`
}
Mappatura dei tipi
| Valore JSON | Tipo Go |
|---|---|
| stringa | string |
| intero | int o int64 |
| numero (decimale) | float64 |
| booleano | bool |
| null (con un fratello non nullo) | *T (puntatore) |
| array | []T |
| oggetto | Struttura nominata |
| array misto | []interface{} |
Idiomi di denominazione seguiti dal generatore
- Iniziali maiuscole:
id->ID,url->URL,api_key->APIKey. Questo corrisponde allo stile raccomandato da Go (e alle regole digo vet/staticcheck). - JSON snake_case -> campi PascalCase:
first_name->FirstName. - Acronimi di una sola parola preservati:
IPrimaneIP,HTTPrimaneHTTP. - Tag JSON:
json:"first_name"mantiene la chiave originale in modo che le codifiche siano pulite.
Campi opzionali: puntatore o omitempty?
| Strategia | Usa quando |
|---|---|
Puntatore (*T) |
Devi distinguere “assente” da “valore zero” |
omitempty |
Vuoi solo saltare i valori zero durante la codifica; la decodifica memorizza zero per i mancanti |
| Nessuno | Il campo è sempre presente e i valori zero sono significativi |
Il generatore predefinisce puntatore + omitempty per tutto ciò che è visto come nullo; regola in base alla tua semantica.
Errori comuni
- Usare
intdove l’intero JSON superaMaxInt32su un target a 32 bit. Usaint64per valori noti grandi. - Codifica di ritorno e perdita dell’ordine delle chiavi.
encoding/jsonemette chiavi nell’ordine di dichiarazione dei campi, non nell’ordine JSON originale. Ordina manualmente se hai bisogno di un output canonico. - Array di forme miste.
[]interface{}perde la sicurezza dei tipi. Considera i tipi unione con un campo discriminatoretypeinvece. - Dimenticare
omitemptysugli opzionali. Senza di esso, i campi opzionali si serializzano come"foo": nullinvece di essere omessi.
Domande frequenti
Usa puntatori quando devi distinguere “campo assente” da “campo è zero”. Usa omitempty quando il valore zero non è un valore commerciale legale ("", 0, false significano sempre “salta questo”). Molti team scelgono uno e lo applicano in modo coerente in un codice.
Ogni oggetto annidato diventa una dichiarazione di struttura nominata separata (ad es. User -> Address). I tipi sono in linea solo quando la struttura annidata è piccola e usata una sola volta; altrimenti ottieni tipi puliti e riutilizzabili.
Sì. id diventa ID, url diventa URL, api_key diventa APIKey. Questo è ciò che go vet si aspetta e ciò che la maggior parte delle guide di stile Go raccomanda.
Il generatore emette strutture semplici con tag standard json:. Per implementazioni personalizzate di UnmarshalJSON (ad es. per date in formati non ISO), aggiungile manualmente dopo la generazione.
Strumenti correlati
Riferimento Tabella ASCII
Tabella ASCII completa da 0 a 127 con decimale, esadecimale, ottale, binario e riferimento numerico HTML per ogni carattere, inclusi i codici di controllo come NUL, LF e DEL.
Riferimento ai caratteri HTML
Elenco ricercabile delle entità HTML, dei loro codici nominati e numerici, e copia con un clic per caratteri e simboli speciali.
Generatore di lettere casuali
Genera lettere A-Z casuali. Scegli la quantità, usa maiuscole, minuscole o un mix, e applica il risultato a giochi, spunti o attività in classe.
Riferimento scorciatoie da tastiera
Cerca le scorciatoie predefinite documentate di VS Code, Chrome e Bash con GNU Readline su macOS, Windows e Linux.
Promemoria Markdown
Riferimento pratico Markdown con anteprime reali ed esempi pronti da copiare per titoli, elenchi, tabelle, codice, link, immagini e sintassi GFM.
Formatter HTML
Formatta HTML localmente nel browser con rientri di due o quattro spazi. L’HTML non viene caricato né validato.
Strumento disponibile in altre lingue
- JSON ke Struktur Go [ID]
- JSON thành cấu trúc [VI]
- JSON a Estructura Go [ES]
- JSON vers Go Struct [FR]
- JSON을 Go 구조체로 변환 [KO]
- JSON naar Go-structuur [NL]
- JSON till Go-struktur [SV]
- JSON→Go構造体 [JA]
- JSON เป็นโครงสร้างข้อมูล Go [TH]
- JSON إلى بنية Go [AR]
- JSON zu Go Struct [DE]
- JSON na strukturę Go [PL]
- JSON para Estrutura Go [PT]
- JSON в структуру данных [RU]
- JSON'dan Go Yapısına [TR]
- JSON 至Go结构 [ZH]
- JSON to Go Struct [EN]