使用 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中文网其他相关文章!