json - 如何验证 JSON 输入
问题描述
我正在使用 Beego 框架在 Go 中构建一个 Web 应用程序。我必须在 API 请求中验证传入的 JSON。
我可以将 JSON 解组为一个可以正常工作的结构,但我也想验证数据。例如,如果类型与 struct json.Unmarshal 中的类型不匹配,将在第一次出现时返回错误。我想一次验证并获取 JSON 的所有错误。
我已经尝试过https://github.com/thedevsaddam/govalidator
,但是包需要一个对请求对象的引用,而这在 Beego 的控制器中是不可用的。还有其他验证器可以验证结构,但我也想要 json 验证。
编辑:
可以从控制器的上下文对象中找到对 beego 中请求对象的引用,如下所示:
func (this *MainController) Post() {
fmt.Println(this.Ctx.Request)
}
但是问题仍然与 json unmarshal 相同。如果类型有任何轻微的不匹配,json.unmarshal 会立即恐慌。我也希望能够验证类型。
解决方案
由于 Golang v1.9json.Valid([]byte)
已成为“encoding/json”包中可用的有效方法。
推荐阅读
- c++ - 类成员初始化器:语法和用法
- ios - Swift present 以一种奇怪的方式打开视图
- objective-c - 在 NSTabView 的字段之间切换
- c - 为什么我不能打印第一个/最后一个字符?
- python - 如何使用 kivy 和 RecycleView 编辑 SQLite 数据库值
- html - 分页:如何在 Angular 7 中获取下一个和上一个函数的当前页面值?
- email-templates - 通过 MJML,如何创建带有嵌套列的响应式电子邮件模板?
- r - read.table() 是否不能容忍丢失的数据?
- python-3.x - 如何在此 DataFrame 上应用函数以将日期更改为所需格式并避免“0”和“-”
- sql-server - 使用带有 ef 核心的迁移将新列和约束添加到表中