【问题标题】:Why is my Go server not correctly decoding the JSON it is being sent from the client?为什么我的 Go 服务器无法正确解码从客户端发送的 JSON?
【发布时间】:2018-05-22 03:00:25
【问题描述】:

我正在为一个项目使用 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"
}

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

【问题讨论】:

  • 重复。 10'000。

标签: json rest go server


【解决方案1】:

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

修改你的结构到下面

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    相关资源
    最近更新 更多