我想用govalidator验证数组的输入映射。ValidateMap。
请有人为数组的映射提供示例mapTemplate。请在下面找到代码片段。
提前感谢
package main
import (
"fmt"
"github.com/asaskevich/govalidator"
)
func main() {
var mapTemplate = map[string]interface{}{
"name": "required,alpha",
"categories": []interface{}{",alpha"}, //error: map validator has to be either map[string]interface{} or string; got []interface {}
}
var inputMap = map[string]interface{}{
"name": "Prabhu",
"categories": []interface{}{"category1", "category2"},
}
result, err := govalidator.ValidateMap(inputMap, mapTemplate)
if err != nil {
fmt.Println("error: " + err.Error())
}
fmt.Printf("result : %vn", result)
for _, v := range inputMap["categories"].([]interface{}) {
fmt.Printf("category : %vn", v)
}
}
似乎还没有实现切片的验证。在What to contribute
列表中没有检查切片/阵列。
但是,您可以使用函数ValidateArray
来迭代切片并验证其成员。
govalidator.ValidateArray(inputMap["categories"], func(val interface{}, i int) bool {
valStr, ok := val.(string)
if !ok {
return false
}
return govalidator.IsAlpha(valStr)
})