go - 在 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,
})
}
....
}
当前的请求{}
是有效的。
如果未提供,默认绑定行为是在字段中静默写入零,但我想生成一个错误。
解决方案
似乎您的代码生成器需要支持为您的模型生成自定义标签。然后你可以参考https://github.com/gin-gonic/gin#model-binding-and-validation,它表明有一个'binding'标签可以用来声明哪个字段是必需的。
推荐阅读
- swift - 使用从超类继承的值创建字典
- javascript - 使用带有tomcat的javascript访问文件内容的问题
- apache-spark - 计算交易数据中的天数,但在 PySpark 中从早上 6 点到第二天早上 6 点
- vb.net - 创建字符串排列以在 O 和 0 之间变化
- ruby-on-rails - 具有多语言响应的 Rails Json
- angular - 当未从建议的选项中选择项目时,如何在多个自动完成组件中清除并显示错误
- c# - 带有 Angular 6 的 .Net Framework 4.5 中的 CORS 问题
- r - 使用 vapply 分配新的数据框值
- java - 如何从值中对值进行排序
在数组列表中? - events - 如何使用 Microsoft Graph 更新日历事件