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.