我正在使用Beego框架在Go语言中构建Web应用程序。我必须验证API请求中的传入JSON数据。
我可以将JSON反序列化为结构体,这很好用,但是我也想验证数据。例如,如果类型与结构中的类型不匹配,json.Unmarshal将在第一次出现时返回一个错误。我想对JSON进行验证并获取所有错误。
我已经尝试过https://github.com/thedevsaddam/govalidator ,但是该程序包需要引用请求对象,而在Beego的控制器中无法获得该对象的引用。还有其他可以验证结构体但我想要JSON验证。
编辑:
从控制器的上下文对象中可以找到对请求对象的引用。
我可以将JSON反序列化为结构体,这很好用,但是我也想验证数据。例如,如果类型与结构中的类型不匹配,json.Unmarshal将在第一次出现时返回一个错误。我想对JSON进行验证并获取所有错误。
我已经尝试过https://github.com/thedevsaddam/govalidator ,但是该程序包需要引用请求对象,而在Beego的控制器中无法获得该对象的引用。还有其他可以验证结构体但我想要JSON验证。
编辑:
从控制器的上下文对象中可以找到对请求对象的引用。
func (this *MainController) Post() {
fmt.Println(this.Ctx.Request)
}
但是,使用JSON解封时仍存在问题。如果类型存在轻微不匹配,json.unmarshal将立即引发异常。我想能够验证类型是否匹配。
json.Decoder.Token()
可能会有所帮助,但需要编写相当多的代码。 - Mihai Todor