json Unmarshal(non-pointer model.Submit)报错
这个报错:
json: Unmarshal(non-pointer model.Submit)出现在语句:
err := c.ShouldBind(codedata)说明在调用 ShouldBind 时传入了一个 非指针类型 的参数,而它需要一个指针类型来把 JSON 数据反序列化进去。
问题详解:
在 Go 的 encoding/json 包(Gin 的绑定底层也是用它)中,json.Unmarshal 必须接收一个指针,否则无法修改原变量的值。
例如:
type Submit struct {
Code string `json:"code"`
}错误写法(非指针):
var codedata model.Submit // 这是值类型
err := c.ShouldBind(codedata) // 这里会报错:json: Unmarshal(non-pointer model.Submit)正确写法(指针):
var codedata model.Submit
err := c.ShouldBind(&codedata) // 正确,传指针正确写法总结:
var codedata model.Submit
err := c.ShouldBind(&codedata)
if err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
} 当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »