在GO中返回一个简单的JSON响应

时间:2018-05-21 15:18:42

标签: json go

我目前正在将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"})
}

但这显然不起作用。

2 个答案:

答案 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)