はじめに
railsとかだと render json: HASH
とかでよしなにjson形式にして返してくれるんですが、
goだと結構嵌ったのでメモ。
今回はサンプルで /ping
にアクセスすると
{ status: 200, result: “ok” }
というjsonを返す例を作ってみたいと思います。
jsonで返すレスポンスを定義する
まずは、どんなレスポンスを返すかを定義する
今回は status
が 数字 result
が文字列 なので下記のようになると思います。
type Ping struct { Status int Rssult string }
jsonを返すhandlerを定義する
… func pingHandler(w http.ResponseWriter, r *http.Request) { ping := Ping{http.StatusOK, "ok"} res, err := json.Marshal(ping) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/json") w.Write(res) } func main() { http.HandleFunc("/ping", pingHandler) http.ListenAndServe(":8000", nil) } …
json.Marshal
でjson形式に変換指定ます。
※ http.StatusOK == 200
実際にアクセスしてみる
では実際にアクセスしてみます。
お!! でき…てない…
惜しい。
jsonのkeyが大文字になっているので修正します。
type Ping struct { Status int `json:"status"` Result string `json:"result"` }
このようにjsonの時のkeyを指定できます
参考URL
まとめ
- 作者: David Chisnall,デイビッド・チズナール,柴田芳樹
- 出版社/メーカー: ピアソン桐原
- 発売日: 2012/10/04
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 5回
- この商品を含むブログを見る
- 作者: 茨木隆彰
- 出版社/メーカー: 工学社
- 発売日: 2010/11
- メディア: 単行本
- クリック: 44回
- この商品を含むブログ (7件) を見る