mysql - 从 Go 将 json 转换为 struct 时出错
问题描述
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 dereference
goroutine 23 [running]:
net/http.(*conn).serve.func1(0x140001e9180)
/usr/local/go/src/net/http/server.go:1824 +0x108
panic(0x10505b860, 0x10522f240)
/usr/local/go/src/runtime/panic.go:971 +0x3f4
traveling/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 literal
goroutine 23 [running]:
net/http.(*conn).serve.func1(0x140001e9360)
/usr/local/go/src/net/http/server.go:1824 +0x108
panic(0x100d85d00, 0x14000206070)
/usr/local/go/src/runtime/panic.go:971 +0x3f4
traveling/controller/mapController.MakeMap(0x100df1630, 0x140001f40e0, 0x1400018aa00)
/Users/choeyunseog/traveling/traveling/controller/mapController/mapController.go:24 +0x194
net/http.HandlerFunc.ServeHTTP(0x100de75d8, 0x100df1630, 0x140001f40e0, 0x1400018aa00)
/usr/local/go/src/net/http/server.go:2069 +0x40
解决方案
要从 POST/PUT/PATCH 请求的正文中获取多部分表单数据,您可以使用该ParseMultipartForm
方法解析正文,然后通过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
})
推荐阅读
- c++ - Boost 块间接排序分段错误
- r - 如何在保留数据框的同时仅提取与单词条件匹配的句子
- python - grid_forget() 出现错误,无法找到属性
- java - 如何从相机或内部存储的图像中获取 ID 以放入 Android EasySlider?
- c# - 使用“for loop”中的 i 作为变量的一部分
- sql - 如何在 SQL 查询中添加计数列?
- c++ - 如何在两个设备之间与 TCP 通信时修复错误“连接被拒绝”
- git - 如何处理 .gitmodules 历史记录中的错误?
- objective-c - 诸如 `%15@` 之类的格式说明符在 NSLog 中有效,但不适用于 NSString stringWithFormat
- r - 有没有一种方法可以通过不同的子文件夹循环相同的功能?