go gin框架ShouldBindJSON不能接受’0‘值
问题
var req struct {ID uint `form:"id" json:"id" binding:"min=0"`Valid int `form:"valid" json:"valid" binding:"required"`}// 绑定 JSON 数据if err := c.ShouldBindJSON(&req); err != nil {fmt.Printf("Error binding JSON: %v\n", err) // 打印绑定错误c.JSON(http.StatusBadRequest, gin.H{"code": 400,"message": "参数错误","data": nil,})return}
当valid为0时就会报错:
Error binding JSON: Key: ‘Valid’ Error:Field validation for ‘Valid’ failed on the ‘required’ tag
实际上当binding标签是required的时候”0“值都不能接受
比如int的0,bool的false,字符串的空串
解决办法
第一种
不用required改用其他标签值比如min=0
第二种
改用指针
var req struct {ID uint `form:"id" json:"id" binding:"min=0"`Valid *int `form:"valid" json:"valid" binding:"required"`}