首頁  >  文章  >  後端開發  >  為什麼我的 Go HTTP 回應回傳文字/純內容類型的空 JSON?

為什麼我的 Go HTTP 回應回傳文字/純內容類型的空 JSON?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-02 22:54:02229瀏覽

Why Does My Go HTTP Response Return an Empty JSON with Text/Plain Content Type?

使用 JSON 的 HTTP 回應

在 Go 中使用 JSON 建立 HTTP 回應時,有必要確保資料格式正確。可能出現的一個問題是文字/純內容類型的空響應。這通常表示 JSON 編碼或用於表示資料的結構存在問題。

在問題中描述的情況下,提供的程式碼嘗試使用以下結構發送JSON 回應:

<code class="go">type ResponseCommands struct {
    key   string
    value bool
}</code>

但是,正如答案正確指出的那樣,該結構中的變數不會導出,這意味著它們以小寫字母開頭。這可能會導致 JSON 編碼出現問題,因為需要匯出 JSON 鍵(以大寫字母開頭)。

要解決此問題,應修改結構以匯出變數:

<code class="go">type ResponseCommands struct {
    Key   string
    Value bool
}</code>

此外,在寫入回應資料之前,必須確保 Content-Type 標頭設定為 application/json。以下程式碼更新處理程序函數以包含此修復:

<code class="go">func handler(rw http.ResponseWriter, req *http.Request) {
    responseBody := ResponseCommands{"BackOff", false}

    data, err := json.Marshal(responseBody)
    if err != nil {
        http.Error(rw, err.Error(), http.StatusInternalServerError)
        return
    }
    rw.WriteHeader(200)
    rw.Header().Set("Content-Type", "application/json")
    rw.Write(data)
}</code>

透過進行這些更改,程式碼應正確產生具有適當內容類型的 JSON 回應。

以上是為什麼我的 Go HTTP 回應回傳文字/純內容類型的空 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn