为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中处理 JSON Post 请求

在 Go 中处理 JSON Post 请求

Go
泛舟湖上清波郎朗 2021-06-03 14:13:32
因此,我有以下内容,这似乎令人难以置信,而且我一直在想,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)

}


查看完整回答
反对 回复 2021-06-07
  • 3 回答
  • 0 关注
  • 246 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信