Go JSON: struct tags e detalhes de Marshal

2025-01-30

Go mapeia JSON com structs e tags. Muitos bugs de integracao surgem de tags erradas ou de confusao com omitempty.

Struct tags

json:"name,omitempty" define nome e omissao; campos nao exportados sao ignorados.

type User struct {
  ID   int    `json:"id"`
  Name string `json:"name,omitempty"`
}

Unmarshal

Numeros em interface{} viram float64 com frequencia; use structs ou json.Number para controle.

json.RawMessage

Permite adiar parse interno, util para payloads com formato variavel.

Marshal

Baseado em reflexao; nao serializa func/canais. Em hot paths, avalie alternativas especializadas.