首页 > 解决方案 > 如何验证 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 会立即恐慌。我也希望能够验证类型。

标签: jsonvalidationgobeego

解决方案


由于 Golang v1.9json.Valid([]byte)已成为“encoding/json”包中可用的有效方法。

参考: https ://golang.org/pkg/encoding/json/#Valid


推荐阅读