JSON zu Go Struct
Fügen Sie ein JSON-Beispiel ein und erhalten Sie Go-Struct-Definitionen, die es sauber mit encoding/json parsen. Felder sind exportiert (CamelCase), mit den ursprünglichen JSON-Schlüsseln getaggt, werden zu Zeigern, wenn ein Wert null sein könnte, und verschachtelte Objekte erhalten ihre eigenen benannten Struct-Deklarationen.
Wie man JSON in Go-Struct konvertiert
-
1
Fügen Sie das JSON ein
Ein einzelnes Beispiel reicht aus. Mehrere Beispiele verbessern die Nullable-Inferenz.
-
2
Wählen Sie die Benennung
PascalCase für exportierte Felder ist die Go-Konvention. Wählen Sie den Abkürzungsstil (`URL` vs `Url`, `ID` vs `Id`).
-
3
Wählen Sie die optionale Strategie
Verwenden Sie Zeiger für nullable Felder (am idiomatischsten) oder `omitempty`-Tags.
-
4
Kopieren Sie die Structs
Ein Root-Struct plus verschachtelte. Fügen Sie es in eine `.go`-Datei ein und drücken Sie `go build`.
Beispielausgabe
Für:
{ "first_name": "Alice", "age": 30, "email": null, "tags": ["admin"] }
Ausgabe:
type User struct {
FirstName string `json:"first_name"`
Age int `json:"age"`
Email *string `json:"email"`
Tags []string `json:"tags"`
}
Typzuordnung
| JSON-Wert | Go-Typ |
|---|---|
| Zeichenkette | string |
| Ganzzahl | int oder int64 |
| Zahl (Dezimal) | float64 |
| Boolescher Wert | bool |
| null (mit nicht-null Nachbar) | *T (Zeiger) |
| Array | []T |
| Objekt | Benanntes Struct |
| gemischtes Array | []interface{} |
Benennungsidiome, die der Generator befolgt
- Initialismen in Großbuchstaben:
id->ID,url->URL,api_key->APIKey. Dies entspricht dem empfohlenen Stil von Go (und den Regeln vongo vet/staticcheck). - Snake_case JSON -> PascalCase-Felder:
first_name->FirstName. - Einzelwort-Akronyme bleiben erhalten:
IPbleibtIP,HTTPbleibtHTTP. - JSON-Tag:
json:"first_name"behält den ursprünglichen Schlüssel, damit die Kodierung sauber funktioniert.
Optionale Felder: Zeiger oder omitempty?
| Strategie | Verwenden, wenn |
|---|---|
Zeiger (*T) |
Sie müssen “abwesend” von “Nullwert” unterscheiden |
omitempty |
Sie möchten nur Nullwerte beim Marshaling überspringen; Unmarshal speichert Null für fehlende |
| Keines | Das Feld ist immer vorhanden und Nullwerte sind bedeutungsvoll |
Der Generator verwendet standardmäßig Zeiger + omitempty für alles, was als null angesehen wird; passen Sie es basierend auf Ihrer Semantik an.
Häufige Fehler
- Verwendung von
int, wenn die JSON-GanzzahlMaxInt32auf einem 32-Bit-Ziel überschreitet. Verwenden Sieint64für bekannte große Werte. - Zurückmarshaling und Verlust der Schlüsselreihenfolge.
encoding/jsongibt Schlüssel in der Reihenfolge der Felddeklaration aus, nicht in der ursprünglichen JSON-Reihenfolge. Sortieren Sie manuell, wenn Sie eine kanonische Ausgabe benötigen. - Gemischte Formate in Arrays.
[]interface{}verliert die Typensicherheit. Erwägen Sie stattdessen Unionstypen mit einemtype-Diskriminatorfeld. omitemptybei optionalen Feldern vergessen. Ohne es serialisieren optionale Felder als"foo": null, anstatt weggelassen zu werden.
Häufig gestellte Fragen
Verwenden Sie Zeiger, wenn Sie “Feld abwesend” von “Feld ist Null” unterscheiden müssen. Verwenden Sie omitempty, wenn der Nullwert kein gültiger Geschäftswert ist ("", 0, false bedeuten immer “überspringen”). Viele Teams wählen eines und wenden es konsistent im gesamten Code an.
Jedes verschachtelte Objekt wird zu einer separaten benannten Struct-Deklaration (z. B. User -> Address). Typen werden nur inline verwendet, wenn das verschachtelte Struct klein und einmalig verwendet wird; andernfalls erhalten Sie saubere, wiederverwendbare Typen.
Ja. id wird zu ID, url wird zu URL, api_key wird zu APIKey. Das erwartet go vet und was die meisten Go-Stilrichtlinien empfehlen.
Der Generator gibt einfache Structs mit Standard-json:-Tags aus. Für benutzerdefinierte UnmarshalJSON-Implementierungen (z. B. für Daten in nicht-ISO-Formaten) fügen Sie diese manuell nach der Generierung hinzu.
Verwandte Tools
ASCII-Tabelle Referenz
Vollständige ASCII-Tabelle von 0 bis 127 mit Dezimal-, Hex-, Oktal-, Binär- und numerischer HTML-Zeichenreferenz für jedes Zeichen, einschließlich Steuerzeichen wie NUL, LF und DEL.
HTML-Zeichenreferenz
Durchsuchbare Liste von HTML-Entitäten, ihren benannten und numerischen Codes sowie eine Ein-Klick-Kopie für Sonderzeichen und Symbole.
Farbrad-Explorer
Erforschen Sie das Farbrad interaktiv. Rotieren Sie Harmonien, vergleichen Sie HSL mit RYB, erkennen Sie komplementäre und triadische Paare in Echtzeit.
Referenz für Tastenkombinationen
Durchsuchen Sie dokumentierte Standardkürzel für VS Code, Chrome und Bash mit GNU Readline unter macOS, Windows und Linux.
Zufallsbuchstaben-Generator
Erzeugen Sie zufällige A-Z-Buchstaben. Wählen Sie Anzahl, Großschreibung, Kleinschreibung oder gemischte Schreibweise für Spiele, Aufgaben und Unterricht.
HTML-Formatter
Formatieren Sie HTML lokal im Browser mit zwei oder vier Leerzeichen Einrückung. HTML wird weder hochgeladen noch validiert.
Tool in anderen Sprachen verfügbar
- 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 na strukturę Go [PL]
- JSON para Estrutura Go [PT]
- JSON in Struttura Go [IT]
- JSON в структуру данных [RU]
- JSON'dan Go Yapısına [TR]
- JSON 至Go结构 [ZH]
- JSON to Go Struct [EN]