Pebble Coding

プログラマーの作業メモ

Go POSTによるJSONパラメータをデコードする際の注意

まずはソースをみて頂こう。

type User struct {
  name string
}

func q(w http.ResponseWriter, r *http.Request){
  decoder := json.NewDecoder(r.Body)
  var user User
  err := decoder.Decode(&user)
  if err != nil {
    panic(err)
  }
  fmt.Println(user)
}

エラーは発生せず、user.nameは常に空となる。
理由はnameの先頭が小文字なので、decoderがこの変数にアクセスできないためである。(たぶん)
nameをNameに変更してあげると、うまくいく。

ふー、まいった。。