因此,我得到了以下内容,这些内容似乎难以置信,我一直在想自己Go的库设计得比此更好,但是我找不到Go处理JSON数据POST请求的示例。它们都是POST形式。
这是一个示例请求: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test
curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test
这是代码,其中嵌入了日志:
package main import ( "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,在这里提到它,以便其他人可以找到它。)
请使用json.Decoder代替json.Unmarshal。
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) }