Go JSON : struct tags et mecanique de Marshal
2025-01-30
Go mappe JSON via structs et tags. Beaucoup de bugs API viennent de tags incorrects ou de malentendus sur omitempty.
Struct tags
json:"name,omitempty" controle nom et omission ; les champs non exportes sont ignores.
type User struct {
ID int `json:"id"`
Name string `json:"name,omitempty"`
}Unmarshal
Les nombres dans interface{} deviennent souvent float64 ; utilisez structs ou json.Number pour plus de controle.
json.RawMessage
Permet de repousser le parsing interne, utile pour des payloads de formes variables.
Marshal
Base sur la reflexion ; pas de serialisation func/channel. Pour les hot paths, vous pouvez tester des alternatives.