Go JSON: Struct Tags und Marshal intern verstehen
2025-01-30
In Go laeuft JSON-Mapping ueber Structs und Tags. Viele API-Mismatches entstehen durch falsche Tags oder unerwartetes omitempty-Verhalten.
Struct Tags
json:"name,omitempty" steuert Feldname und Auslassung; unexportierte Felder werden ignoriert.
type User struct {
ID int `json:"id"`
Name string `json:"name,omitempty"`
}Unmarshal
Zahlen in interface{} landen als float64; fuer Striktheit json.Number oder feste Structs nutzen.
json.RawMessage
Innere Payload spaeter parsen, hilfreich bei polymorphen Strukturen.
Marshal
Reflexionsbasiert; fuer Hot Paths ggf. jsoniter/sonic evaluieren, sonst reicht Standardbibliothek oft aus.