我正在使用 Postman 在本地主机上发布 json 字符串。我在 Postman 中传递的 json 字符串是:{ “name”: "foo"} 但是,当我在测试函数中检索数据时,req.Body我得到如下信息:&{%!s(*io.LimitedReader=&{0xc0820142a0 0}) <nil> %!s(*bufio.Reader=<nil>) %!s(bool=false) %!s(bool=true) {%!s(int32=0) %!s(uint32=0)} %!s(bool=true) %!s(bool=false) %!s(bool=false)}我希望在请求正文中获得 name:foo 。我的 go lang 代码是:import ( "encoding/json" "fmt" "net/http")type Input struct { Name string `json:"name"`}func test(rw http.ResponseWriter, req *http.Request) { var t Input json.NewDecoder(req.Body).Decode(&t) fmt.Fprintf(rw, "%s\n", req.Body)}func main() { http.HandleFunc("/test", test) http.ListenAndServe(":8080", nil)}谁能告诉我为什么我在 req.Body 属性中得到空白数据?非常感谢。
1 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
Reuqes Body 应该是空的,因为您已经从中阅读了所有内容。但这不是问题。
从你的问题,它似乎你的输入是无效的JSON(你有“这是不同的“)。
该解码方法将返回错误,你应该检查。
if err := json.NewDecoder(req.Body).Decode(&t); err != nil {
fmt.Println(err)
}
- 1 回答
- 0 关注
- 161 浏览
添加回答
举报
0/150
提交
取消