Go 处理JSON绑定中的省略值(int)时生成错误

Go 处理JSON绑定中的省略值(int)时生成错误,go,go-gin,Go,Go Gin,使用gin-gonic,我想确定何时从传入的JSON请求中忽略整数值,即使零是一个可能的值。换句话说,零是一个有效值,但我们不能假定为默认值。使用指针构建结构似乎相反,因为没有不存在值的有效对象。在封送处理过程中,我想知道是否有字段未填充 我正在使用OpenAPI定义带有“必需”字段的接口,我希望错误响应与API定义匹配。我正在使用代码生成器创建正在填充的web模型。我希望避免将JSON编组到映射中,验证映射,然后填充模型 例如: type mouth struct { teeth int

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

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

例如:

type mouth struct {
   teeth int
   fillings int
}
当前,
{}
的请求有效


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

似乎您的代码生成器需要支持为您的模型生成自定义标记。然后您可以引用,这表明有一个“binding”标记,您可以使用它来声明需要哪个字段。

似乎您的代码生成器需要支持为您的模型生成自定义标记。然后您可以引用,这表示有一个“binding”标记,您可以使用它来声明需要哪个字段。

使用指针构建结构似乎相反,因为没有不存在值的有效对象。您的意思是说
nil
和json中的not contain字段之间有区别吗?我认为没有映射或手动解析数据是不可能的。使用指针构建结构似乎相反,因为没有不存在值的有效对象。您的意思是说
nil
和json中的not contain字段之间有区别吗?我认为如果没有地图或手动解析数据,这是不可能的。
func ProcessTi0(c *gin.Context) {
    var b mouth
    err = c.Bind(&b)
    if err != nil {
      c.JSON(400, gin.H{
          "err": err,
      })
    }
    ....
}