json - 为什么我的 Go 服务器不能正确解码从客户端发送的 JSON?

标签 json rest go server

我正在为一个项目用 Go 语言编写服务器,其中涉及从客户端接收 JSON 数据并发回 JSON 响应。当我运行代码时,我发出的任何请求都可以正常工作,但响应始终为空。这是我的服务器的代码。

type AddPlayerData struct {
    name string
}

func main() {
    router := mux.NewRouter()
    router.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Println("[ SUCCESS ] Request from ", r.RemoteAddr)
        decoder := json.NewDecoder(r.Body)
        var data AddPlayerData
        err := decoder.Decode(&data)
        if err != nil {
            panic(err)
        }
        defer r.Body.Close()

        json.NewEncoder(w).Encode(data)
    }).Methods("PUT");

    log.Fatal(http.ListenAndServe(":8080", router))
}

我发送的请求是 PUT 请求,格式如下:

{
    "name": "test-player"
}

我正在收到回复,但它始终是空的。

最佳答案

这里的问题是你的 json 编码。 AddPlayerData 结构应该导出它的字段以便 json 解码器/编码器工作。

修改你的结构到下面

type AddPlayerData struct {
    Name string `json:"name"`
}

关于json - 为什么我的 Go 服务器不能正确解码从客户端发送的 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50459159/

相关文章:

Python - 如何将父子转换为嵌套字典

mongodb - Golang + MongoDB 嵌入类型(在另一个结构中嵌入一个结构)

c# - 我可以在 ASP.Net 项目的代码隐藏中使用 JSON.Stringify 吗?

Javascript 连接到 joomla mysql 数据库

django - 何时在 Django 项目中使用 RESTful API

android - 使用 Fitnesse 测试的 Android 中出现错误 java.lang.RuntimeException : Stub!

go - 为什么 GOPATH 在 go env 中转向“OPATH

list - 如何在golang中迭代相同列表时从列表中删除元素

python - 如何修复调用中的 mock_open 差异而不是最终结果

php - 保护特定请求类型、restful API、Laravel