我目前正在将Express API转移到Golang实现。
在Express中,如果我想返回一个简单的临时json响应,我可以这样做
app.get('/status', (req, res) => res.json({status: 'OK'}))
但是,我很难在Go中理解这一点。
我是否需要为这个简单的响应创建一个结构?
我正在尝试这样的事情
func getStatus(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode({status: "OK"})
}
但这显然不起作用。
答案 0 :(得分:4)
对于那些简单的东西,你可以发一个字符串:
w.Write(`{"status":"OK"}`)
但要回答更广泛的问题,您需要在Go notation中定义您的对象。这可以很简单:
json.NewEncoder(w).Encode(map[string]string{"status": "OK"})
答案 1 :(得分:0)
不要使用Encode,因为它将返回base64字符串,而是使用以下代码:
responseWriter.Header().Set("Content-Type", "application/json")
responseWriter.WriteHeader(http.StatusOK)
jsonData := []byte(`{"status":"OK"}`)
responseWriter.Write(jsonData)
如果要返回base64字符串,请使用此字符串:
responseWriter.Header().Set("Content-Type", "application/json")
responseWriter.WriteHeader(http.StatusOK)
jsonData := []byte(`{"status":"OK"}`)
json.NewEncoder(responseWriter).Encode(jsonData)