ブログのコピペです(https://t-hiroyoshi.github.io/go-yuru-json)
最近GoをAPI Gateway(Aggregator)としている環境で開発を行なっているのですが、呼び出し先のServiceの実装が終わっていなくてもClientでとりあえずJSONのresponseが欲しいという状況がありました。
JSONのUnmarshalについてはgolangはゆるふわにJSONを扱えまぁす!という記事が有ったのですが、ゆるふわMarshalについては情報がありませんでした。
ですが考えてみればjson.Marshal()すると[]byte
型になるのでそれを初めから作ってあげればよかったです。
まあもちろんこれではGoの良いところを捨てているようなものですが、開発中のとりあえずのレスポンスには手軽で良いと思いました。
package main
import (
"fmt"
"net/http"
)
func jsonResponse(rw http.ResponseWriter, req *http.Request) {
response := []byte(`
{
"status": "success",
"user":
{
"id": "2d7b8fe1-1e63-4c3b-83b9-46274554e822",
"name": "t-hiroyoshi",
"birthday": "1993-09-06T11:22:33.496Z"
}
}
`)
defer func() {
rw.Header().Set("Content-Type", "application/json")
fmt.Fprint(rw, string(response))
}()
}
func main() {
http.HandleFunc("/json", jsonResponse)
http.ListenAndServe(":8080", nil)
}