在 Go 中处理 JSON Post 请求

因此,我有以下内容,这似乎令人难以置信,而且我一直在想,Go 设计的库比这更好,但我找不到 Go 处理 JSON 数据的 POST 请求的示例。它们都是表单 POST。


这是一个示例请求: 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,在此提及以便其他人可以找到它。)


泛舟湖上清波郎朗
浏览 247回答 3
3回答

慕姐8265434

请使用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)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go