首页 > 解决方案 > 在 JSON Binding 中处理省略值 (int) 时生成错误

问题描述

使用 gin-gonic,我想确定何时从传入的 JSON 请求中省略整数值,即使零是可能的值。换句话说,零是一个有效值,但我们不能假设一个默认值。用指针构建结构似乎相反,因为没有值不存在的有效对象。在编组过程中,我想知道是否未填充任何字段。

我正在使用 OpenAPI 来定义带有“必填”字段的接口,并且我希望错误响应与 API 定义相匹配。我正在使用代码生成器来创建正在填充的 Web 模型。我想避免将 JSON 编组到地图中,验证地图,然后填充模型。

例如:

type mouth struct {
   teeth int
   fillings int
}
func ProcessTi0(c *gin.Context) {
    var b mouth
    err = c.Bind(&b)
    if err != nil {
      c.JSON(400, gin.H{
          "err": err,
      })
    }
    ....
}

当前的请求{}是有效的。

如果未提供,默认绑定行为是在字段中静默写入零,但我想生成一个错误。

标签: gogo-gin

解决方案


似乎您的代码生成器需要支持为您的模型生成自定义标签。然后你可以参考https://github.com/gin-gonic/gin#model-binding-and-validation,它表明有一个'binding'标签可以用来声明哪个字段是必需的。


推荐阅读