为什么我的Go服务器没有正确解码从客户端发送的JSON?

时间:2018-05-22 03:00:26

标签: 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"
}

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

1 个答案:

答案 0 :(得分:1)

这里的问题是你的json编码。 AddPlayerData struct应该导出它的字段,以便json decoder / encoder能够工作。

将您的结构修改为

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