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
Webpack-konfigurationsgenerator
Skapa en webpack.config.js för webpack 5 med vanlig JavaScript, React eller Vue: TypeScript, Babel, CSS eller Sass, bilder, HtmlWebpackPlugin, en utvecklingsserver och raden för npm install.
Protocol Buffers-avkodare
Avkoda Protobuf-byte lokalt från hex, Base64, Base64URL, text eller fil, granska fälttolkningar och exportera en privat rapport.
XSD-validerare
Validera ett XML-dokument mot ett XSD-schema och rapportera element- och typavvikelser med exakta radnummer.
YAML till JSON
Omvandla YAML-konfiguration till JSON för verktyg och API:er som bara accepterar JSON. Hanterar ankare, merge-nycklar och nästlade strukturer.
XML-formaterare
Snygga till XML-dokument med konsekvent indrag och fånga formfel med exakta radnummer.
Generator för platshållarbilder
Skapa en bild på 1–4000 px med egna färger och text, ladda ned PNG eller kopiera webbadress och HTML.
Verktyget finns på andra språk
- JSON na strukturę Go [PL]
- JSON ke Struktur Go [ID]
- JSON→Go構造体 [JA]
- JSON vers Go Struct [FR]
- JSON naar Go-structuur [NL]
- JSON thành cấu trúc [VI]
- JSON เป็นโครงสร้างข้อมูล Go [TH]
- JSON إلى بنية Go [AR]
- JSON zu Go Struct [DE]
- JSON a Estructura Go [ES]
- JSON을 Go 구조체로 변환 [KO]
- JSON para Estrutura Go [PT]
- JSON to Go Struct [EN]
- JSON in Struttura Go [IT]
- JSON в структуру данных [RU]
- JSON'dan Go Yapısına [TR]
- JSON 至Go结构 [ZH]