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"`
	}

你可能感兴趣的:(Go,golang,gin,开发语言)