我需要从posted json中获取一个参数。我不想只为这个做结构。这是我曾经尝试过的
type NewTask struct {
Price uint64 `json:"price"`
}
func (pc TaskController) Create(c *gin.Context) {
var service Service
if err := c.BindJSON(&service); err != nil {
log.Println(err) // this works
}
var u NewTask
if err := c.BindJSON(&u); err != nil {
log.Println(err) // this return EOF error
}
fmt.Println(u.Price)
}
字符串
请求的数据具有许多其他字段,包括 * 价格 *
{
...other fields
price: 30
}
型
但是这不起作用。我想这是因为我绑定了两次,我怎么能成功绑定多个?
谢啦,谢啦
2条答案
按热度按时间dxpyg8gm1#
尝试使用
ShouldBindJSON
。BindJSON
正在阅读body,所以如果上下文Body被多次读取,我们就在EOF
。ShouldBindJSON
将请求体存储到上下文中,并在再次调用时重用。k3fezbri2#
使用
ShouldBindBodyWith
多次绑定请求体而不会出现问题。用途:
字符串
参考号:https://pkg.go.dev/github.com/gin-gonic/gin#Context.ShouldBindBodyWith
ShouldBindBodyWith
与ShouldBindWith
类似,但它将请求体存储到上下文中,并在再次调用时重用。注意:此方法在绑定之前读取主体。因此,如果只需要调用一次,应该使用ShouldBindWith来获得更好的
performance
。