【发布时间】: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中?我认为没有地图或手动解析数据是不可能的。