Go JSON: struct tags y detalles de Marshal
2025-01-30
Go mapea JSON con structs y etiquetas. Muchos bugs de integracion API aparecen por tags mal definidos o por sorpresas con omitempty.
Struct tags
Usa json:"name,omitempty" para controlar nombre y omision; campos no exportados se ignoran.
type User struct {
ID int `json:"id"`
Name string `json:"name,omitempty"`
}Unmarshal
Los numeros en interface{} suelen caer en float64; usa structs o json.Number para mayor control.
json.RawMessage
Permite posponer parseo interno, util para payloads con forma variable.
Marshal
Basado en reflexion; no serializa func/canales. Para hot paths puedes evaluar alternativas especializadas.