Feat: support validate struct without struct tag (#934)
parent
d3e4be3e44
commit
d0d0c355aa
@ -0,0 +1,92 @@ |
|||||||
|
package main |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"github.com/go-playground/validator/v10" |
||||||
|
) |
||||||
|
|
||||||
|
type Data struct { |
||||||
|
Name string |
||||||
|
Email string |
||||||
|
Details *Details |
||||||
|
} |
||||||
|
|
||||||
|
type Details struct { |
||||||
|
FamilyMembers *FamilyMembers |
||||||
|
Salary string |
||||||
|
} |
||||||
|
|
||||||
|
type FamilyMembers struct { |
||||||
|
FatherName string |
||||||
|
MotherName string |
||||||
|
} |
||||||
|
|
||||||
|
type Data2 struct { |
||||||
|
Name string |
||||||
|
Age uint32 |
||||||
|
} |
||||||
|
|
||||||
|
var validate = validator.New() |
||||||
|
|
||||||
|
func main() { |
||||||
|
validateStruct() |
||||||
|
// output
|
||||||
|
// Key: 'Data2.Name' Error:Field validation for 'Name' failed on the 'min' tag
|
||||||
|
// Key: 'Data2.Age' Error:Field validation for 'Age' failed on the 'max' tag
|
||||||
|
|
||||||
|
validateStructNested() |
||||||
|
// output
|
||||||
|
// Key: 'Data.Name' Error:Field validation for 'Name' failed on the 'max' tag
|
||||||
|
// Key: 'Data.Details.FamilyMembers' Error:Field validation for 'FamilyMembers' failed on the 'required' tag
|
||||||
|
} |
||||||
|
|
||||||
|
func validateStruct() { |
||||||
|
data := Data2{ |
||||||
|
Name: "leo", |
||||||
|
Age: 1000, |
||||||
|
} |
||||||
|
|
||||||
|
rules := map[string]string{ |
||||||
|
"Name": "min=4,max=6", |
||||||
|
"Age": "min=4,max=6", |
||||||
|
} |
||||||
|
|
||||||
|
validate.RegisterStructValidationMapRules(rules, Data2{}) |
||||||
|
|
||||||
|
err := validate.Struct(data) |
||||||
|
fmt.Println(err) |
||||||
|
fmt.Println() |
||||||
|
} |
||||||
|
|
||||||
|
func validateStructNested() { |
||||||
|
data := Data{ |
||||||
|
Name: "11sdfddd111", |
||||||
|
Email: "zytel3301@mail.com", |
||||||
|
Details: &Details{ |
||||||
|
Salary: "1000", |
||||||
|
}, |
||||||
|
} |
||||||
|
|
||||||
|
rules1 := map[string]string{ |
||||||
|
"Name": "min=4,max=6", |
||||||
|
"Email": "required,email", |
||||||
|
"Details": "required", |
||||||
|
} |
||||||
|
|
||||||
|
rules2 := map[string]string{ |
||||||
|
"Salary": "number", |
||||||
|
"FamilyMembers": "required", |
||||||
|
} |
||||||
|
|
||||||
|
rules3 := map[string]string{ |
||||||
|
"FatherName": "required,min=4,max=32", |
||||||
|
"MotherName": "required,min=4,max=32", |
||||||
|
} |
||||||
|
|
||||||
|
validate.RegisterStructValidationMapRules(rules1, Data{}) |
||||||
|
validate.RegisterStructValidationMapRules(rules2, Details{}) |
||||||
|
validate.RegisterStructValidationMapRules(rules3, FamilyMembers{}) |
||||||
|
err := validate.Struct(data) |
||||||
|
|
||||||
|
fmt.Println(err) |
||||||
|
} |
Loading…
Reference in new issue