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.