JSON till Go-struktur
Klistra in ett JSON-exempel och få Go-strukturdefinitioner som parsar det rent med encoding/json. Fälten exporteras (CamelCase), taggas med de ursprungliga JSON-nycklarna, omvandlas till pekare när ett värde kan vara null, och nästlade objekt får egna namngivna strukturdeklarationer.
Så konverterar du JSON till en Go-struktur
-
1
Klistra in JSON
Ett enda exempel räcker. Fler exempel förbättrar slutledningen av nullbara fält.
-
2
Välj namngivning
För exporterade fält är PascalCase den gängse konventionen i Go. Välj förkortningsstil (`URL` kontra `Url`, `ID` kontra `Id`).
-
3
Välj strategi för valfria fält
Använd pekare för nullbara fält (mest idiomatiskt) eller `omitempty`-taggar.
-
4
Kopiera strukturerna
En rotstruktur plus de nästlade. Klistra in i en `.go`-fil och kör `go build`.
Exempel på utdata
För:
{ "first_name": "Alice", "age": 30, "email": null, "tags": ["admin"] }
Utdata:
type User struct {
FirstName string `json:"first_name"`
Age int `json:"age"`
Email *string `json:"email"`
Tags []string `json:"tags"`
}
Typmappning
| JSON-värde | Go-typ |
|---|---|
| sträng | string |
| heltal | int eller int64 |
| tal (decimalt) | float64 |
| booleskt värde | bool |
| null (med ett icke-null-syskon) | *T (pekare) |
| array | []T |
| objekt | Namngiven struktur |
| blandad array | []interface{} |
Namngivningsidiom som generatorn följer
- Initialismer skrivs med versaler:
id→ID,url→URL,api_key→APIKey. Detta följer Go:s rekommenderade stil (och reglerna förgo vet/staticcheck). - snake_case-JSON → PascalCase-fält:
first_name→FirstName. - Enkelordsakronymer bevaras:
IPförblirIP,HTTPförblirHTTP. - JSON-tagg:
json:"first_name"behåller den ursprungliga nyckeln så att kodningen fungerar rent i båda riktningarna.
Valfria fält: pekare eller omitempty?
| Strategi | Använd när |
|---|---|
Pekare (*T) |
Du måste skilja på “frånvarande” och “nollvärde” |
omitempty |
Du vill bara hoppa över nollvärden vid marshalning; unmarshalning lagrar noll för saknade värden |
| Ingetdera | Fältet finns alltid och nollvärden är meningsfulla |
Generatorn använder som standard pekare + omitempty för allt som ses som null; justera efter din semantik.
Vanliga misstag
- Att använda
intnär JSON-heltalet överstigerMaxInt32på ett 32-bitarsmål. Användint64för värden som är kända för att vara stora. - Att marshalla tillbaka och förlora nyckelordningen.
encoding/jsonskickar ut nycklar i fältdeklarationsordning, inte i den ursprungliga JSON-ordningen. Sortera manuellt om du behöver en kanonisk utdata. - Arrayer med blandad form.
[]interface{}förlorar typsäkerheten. Överväg i stället unionstyper med etttype-diskriminatorfält. - Att glömma
omitemptypå valfria fält. Utan det serialiseras valfria fält som"foo": nulli stället för att utelämnas.
Vanliga frågor
Använd pekare när du behöver skilja mellan “fält saknas” och “fält är noll”. Använd omitempty när nollvärdet inte är ett giltigt affärsvärde ("", 0 och false betyder alltid “hoppa över detta”). Många team väljer ett av alternativen och tillämpar det konsekvent i hela kodbasen.
Varje nästlat objekt blir en separat namngiven strukturdeklaration (t.ex. User → Address). Typerna infogas inline endast när den nästlade strukturen är mycket liten och används en gång; annars får du rena, återanvändbara typer.
Ja. id blir ID, url blir URL och api_key blir APIKey. Det är vad go vet förväntar sig och vad de flesta Go-stilguider rekommenderar.
Generatorn skapar enkla strukturer med standardtaggar json:. För anpassade UnmarshalJSON-implementeringar (t.ex. för datum i icke-ISO-format) lägger du till dem manuellt efter genereringen.
Relaterade verktyg
ASCII-tabellreferens
Full ASCII-tabell från 0 till 127 med decimal-, hex-, oktal- och binärvärden samt notation för numeriska HTML-referenser, inklusive NUL, LF och DEL.
HTML-teckenreferens
En sökbar lista över HTML-entiteter med deras namngivna och numeriska koder samt kopiering med ett klick för specialtecken och symboler.
Referens för kortkommandon
Sök dokumenterade standardkommandon för VS Code, Chrome och Bash med GNU Readline i macOS, Windows och Linux.
HTML-formaterare
Formatera HTML lokalt i webbläsaren med indrag på två eller fyra blanksteg. HTML laddas inte upp eller valideras.
E-postvalidator
Validera en e-postadress: RFC 5322-syntaxkontroll, live-slagning av MX-poster samt detaljer om lokal del, domän och längd. Ingen e-post skickas.
EditorConfig-generator
Generera en .editorconfig-fil med dina regler för indragsstil och -storlek, radslut, teckenuppsättning och blanksteg för enhetlig formatering i alla IDE:er och editorer.
Verktyget finns på andra språk
- JSON إلى بنية Go [AR]
- JSON naar Go-structuur [NL]
- JSON na strukturę Go [PL]
- JSON thành cấu trúc [VI]
- JSON เป็นโครงสร้างข้อมูล Go [TH]
- JSON a Estructura Go [ES]
- JSON→Go構造体 [JA]
- JSON ke Struktur Go [ID]
- JSON vers Go Struct [FR]
- JSON zu Go Struct [DE]
- JSON para Estrutura Go [PT]
- JSON을 Go 구조체로 변환 [KO]
- JSON в структуру данных [RU]
- JSON'dan Go Yapısına [TR]
- JSON 至Go结构 [ZH]
- JSON to Go Struct [EN]
- JSON in Struttura Go [IT]