亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 Go 將 json 轉換為結構時出錯

從 Go 將 json 轉換為結構時出錯

Go
子衿沉夜 2022-09-26 15:35:50
 func MakeMap(w http.ResponseWriter, r *http.Request) {    // userInfo := context.Get(r, "userInfo").(model.User)    type _getData struct {        Title string   `json:"title"`        Tag   []string `json:"tag"`    }    var getData _getData    err := json.NewDecoder(r.Body).Decode(&getData)    if err != nil {        panic(err.Error())    }    fmt.Print(getData)}當我運行上面的代碼時,我得到以下錯誤2021/08/24 13:56:54 http: panic serving 127.0.0.1:50619: runtime error: invalid memory address or nil pointer dereferencegoroutine 23 [running]:net/http.(*conn).serve.func1(0x140001e9180)        /usr/local/go/src/net/http/server.go:1824 +0x108panic(0x10505b860, 0x10522f240)        /usr/local/go/src/runtime/panic.go:971 +0x3f4traveling/controller/mapController.MakeMap(0x1050b5630, 0x140001f40e0, 0x1400018aa00)/Users/choeyunseog/traveling/traveling/controller/mapController/mapController.go:20 +0x3c我剛剛開始學習,我不確定為什么我有這個問題,請幫忙在此處輸入圖像描述err := json.NewDecoder(r.Body).Decode(&getData) 當我像上面一樣更改代碼行20時,我收到以下錯誤 2021/08/24 14:16:44 http: panic serving 127.0.0.1:51396: invalid character '-' in numeric literalgoroutine 23 [running]:net/http.(*conn).serve.func1(0x140001e9360)        /usr/local/go/src/net/http/server.go:1824 +0x108panic(0x100d85d00, 0x14000206070)        /usr/local/go/src/runtime/panic.go:971 +0x3f4traveling/controller/mapController.MakeMap(0x100df1630, 0x140001f40e0, 0x1400018aa00)        /Users/choeyunseog/traveling/traveling/controller/mapController/mapController.go:24 +0x194net/http.HandlerFunc.ServeHTTP(0x100de75d8, 0x100df1630, 0x140001f40e0, 0x1400018aa00)        /usr/local/go/src/net/http/server.go:2069 +0x40
查看完整描述

2 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

要從 POST/PUT/PATCH 請求的正文獲取多部分表單數據,可以使用解析多部分表單方法來解析正文,然后通過 PostForm 字段訪問數據?;蛘?,您可以使用 FormValue 僅獲取與表單字段關聯的第一個值。

maxMemory := 32<<20

if err := r.ParseMultipartForm(maxMemory); err != nil {

    panic(err)

}


fmt.Println(_getData{

    Title: r.FormValue("title"), // FormValue returns string

    Tag:   r.PostForm["tag[]"],  // PostForm is a map of []string

})


查看完整回答
反對 回復 2022-09-26
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

您可以使用包 github.com/senpathi/paramex 將表單數據解析為 json,如帶注釋的結構。結構字段必須使用關鍵字進行注釋,并且標記名稱是表單數據的鍵。param


您的結構應如下所示。


type _getData struct {

        Title string   `param:"title"`

        Tag   []string `param:"tag[]"`

    }

這是問題中提到的郵遞員請求的更新的 MakeMap 處理程序函數


func MakeMap(w http.ResponseWriter, r *http.Request) {

    // userInfo := context.Get(r, "userInfo").(model.User)

    type _getData struct {

        Title string   `param:"title"`

        Tag   []string `param:"tag[]"`

    }


    // this needed because u send data from Postman as multipart/form-data

    maxMemory := 32<<20

    if err := r.ParseMultipartForm(int64(maxMemory)); err != nil {

        panic(err)

    }


    var getData _getData


    extractor := paramex.NewParamExtractor()

    err := extractor.ExtractForms(&getData, r)

    if err != nil {

        panic(err.Error())

    }


    fmt.Print(getData)

    //Output: {defaultMap [travelling travelling2]}

}


查看完整回答
反對 回復 2022-09-26
  • 2 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號