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.