【问题标题】:Generating errors when handling omitted values (int) in JSON Binding在 JSON Binding 中处理省略值 (int) 时生成错误
【发布时间】:2020-08-02 07:17:29
【问题描述】:

使用 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,
      })
    }
    ....
}

目前{}的请求有效。

默认绑定行为是在未提供时将零默默地写入字段,但我想生成一个错误。

【问题讨论】:

  • 使用指针构建结构似乎相反,因为没有值不存在的有效对象。您的意思是 nil 和不包含字段之间存在差异在json中?我认为没有地图或手动解析数据是不可能的。

标签: go go-gin


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-03-11
    • 1970-01-01
    • 2015-11-30
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 2014-11-03
    相关资源
    最近更新 更多