首页  >  文章  >  后端开发  >  为什么我的 Go HTTP 响应返回文本/纯内容类型的空 JSON?

为什么我的 Go HTTP 响应返回文本/纯内容类型的空 JSON?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-02 22:54:02231浏览

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