validate
validate copied to clipboard
怎么样才能验证内嵌结构体呢?
如:
type A struct {
T1 string `validate:"required"`
T2 string `validate:"required"`
}
type B struct {
T1 string `json:"T1,omitempty"` // is not required
A
}
原先有一个A结构体,在A结构体上扩展出B(相当于B继承了A, 然后T1字段想把它改为非required)
前端传过来一个 {T2:"xxx"}
可以验证通过 ,解析JSON后,B的值为 {T1:"", A { T2:"xxx" }}
希望老哥能够解答,先谢谢了!
你是指验证有问题吗? 还是说 为啥 A.T1
没有值
你是指验证有问题吗? 还是说 为啥
A.T1
没有值
验证有问题,我想实现一个类似继承的功能,在B结构体中重写A的规则。A中是必须的么,但是想在B中修改A为非必须,然后可以验证通过。
这种不行的 虽然都叫 T1
实际上是两个字段了。
-
B.T1
不会验证 -
B.A.T1
还是会验证的
如果只是有时想验证T1,可以配置场景:
// ConfigValidation config the Validation
// eg:
// - define validate scenes
func (f A) ConfigValidation(v *validate.Validation) {
v.WithScenes(validate.SValues{
"update": []string{"T2"},
})
}
// 验证时指定场景 - 只验证 T2
a := &A{T2: "val"}
v := validate.Struct(a, "update")
v.Validate() // True