如何验证 JSON 输入

Ans*_*Raj 5 validation json go beego

我正在使用 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)
}
Run Code Online (Sandbox Code Playgroud)

但是问题仍然与 json unmarshal 相同。如果类型有任何轻微的不匹配, json.unmarshal 会立即恐慌。我也希望能够验证类型。

Nes*_*kil 5

我们已将go-playground/validator.v8用于类似目的。您可以使用开箱即用的标签定义数据验证(基本的东西,如相等、最小值/最大值,甚至还有一些表达式 lang)。最重要的是,您可以添加自定义验证。文档里都有,希望能帮到你。


小智 5

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

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