🙇‍♂️

Echo(Go)で可変のJSONをBINDする

2023/04/10に公開

APIなどリクエストを受けてサーバ側で何らかの処理をする際にデータを構造体にBINDしたい。その際に要素数が固定ではなく可変だった場合の対応です。

イメージとしては以下のようなリクエストを想定しています配列の形でリクエストが来て、ユーザーの操作によるので要素数が固定できない仕様となります

[
  {"value1":"aaa","value2":0},
  {"value1":"bbb","value2":1},
  {"value1":"ccc","value2":2}
]

その場合はEchoで以下のような書き方でBINDできます

type value struct {
  value1 string `json:"value1`
  value2 int    `json:"value2`
}

e := echo.New()
e.POST("/values", func(c echo.Context) error {
  v := new([]value)
  if err := c.Bind(v); err != nil {
    return err
  }
  // 中略
}

特に難しいことは不要で、受け取るJSON文字列に合わせてデータ型を定義して、配列の形で受け取ることができます。

Discussion