json.Marshal
- 単純にgoの構造体をバイト列に変換する
- レスポンスを返却する場合は、レスポンスに別途書き込む必要がある。
marshalHandler(w http.ResponseWriter, r *http.Request){ response := getResponseStruct() data, err := json.Marshal(response) if err!=nil{ panic("error") } fmt.Fprint(w, string(data)) }
encoder.Encode
- レスポンスに直接バイト列を書き込める
- メモリ使用量が減る
encodeHandler(w http.ResponseWriter, r *http.Request){ response := getResponseStruct() encoder := json.NewEncoder(w) encoder.Encode(&response) }