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.