# validate **Repository Path**: lichenxin/validate ## Basic Information - **Project Name**: validate - **Description**: JSON 字符串 转 结构体 数据验证,支持自定义验证 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-11-16 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 项目介绍 JSON 字符串 转 结构体 数据验证,支持自定义验证 ``` type Bar struct { Name string `json:"name" validate:"required=true"` Age int `json:"age" validate:"required=false"` } type Foo struct { Name string `json:"name" validate:"required=false,enum=1,2"` Age int `json:"age" validate:"test=20"` Mail string `json:"mail" validate:"regexp=\\w+@\\w+\\.\\w+"` Num []int `json:"num"` Bars []Bar `json:"bars"` Bar Bar `json:"bar"` } func main() { var js = `{ "name":"1", "age":20, "mail": "test@qq.com", "num":[1, 2], "bars": [ {"name":1,"bar":2}, {"name":11,"age":22} ], "bar": {"name":"3","age":"4"} }` var foo Foo err := JSONValidate().SetHandler("test", func (value interface{}, param string) error { v, ok := value.(float64) if !ok { return fmt.Errorf("value to string error") } if strconv.Itoa(int(v)) != param { return fmt.Errorf("value not eq %s", param) } return nil }).ParseJSONByte([]byte(js), &foo) fmt.Println(foo, err) } ```