因此,我有以下内容,这似乎令人难以置信,而且我一直在想,Go 设计的库比这更好,但我找不到 Go 处理 JSON 数据的 POST 请求的示例。它们都是表单 POST。这是一个示例请求: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test这是代码,嵌入了日志:package mainimport ( "encoding/json" "log" "net/http")type test_struct struct { Test string}func test(rw http.ResponseWriter, req *http.Request) { req.ParseForm() log.Println(req.Form) //LOG: map[{"test": "that"}:[]] var t test_struct for key, _ := range req.Form { log.Println(key) //LOG: {"test": "that"} err := json.Unmarshal([]byte(key), &t) if err != nil { log.Println(err.Error()) } } log.Println(t.Test) //LOG: that}func main() { http.HandleFunc("/test", test) log.Fatal(http.ListenAndServe(":8082", nil))}一定有更好的方法,对吧?我只是难以找到最佳实践。(Go 也被搜索引擎称为 Golang,在此提及以便其他人可以找到它。)
3 回答
慕姐8265434
TA贡献1813条经验 获得超2个赞
请使用json.Decoder代替json.Unmarshal。
func test(rw http.ResponseWriter, req *http.Request) {
decoder := json.NewDecoder(req.Body)
var t test_struct
err := decoder.Decode(&t)
if err != nil {
panic(err)
}
log.Println(t.Test)
}
- 3 回答
- 0 关注
- 246 浏览
添加回答
举报
0/150
提交
取消