如何通过Golang跳过空数组的JSON验证

4
我想跳过特定字段的JSON文件中空数组的验证。下面是Book结构体定义,如果在json文件中未声明作者,则可以进行验证。另一方面,如果为作者定义了空数组,则会失败。是否可以使用现有标签实现此行为,或者我必须定义自定义验证器?
type Book struct {
    Title      string `json:"title" validate:"min=2"`
    Authors    `json:"authors" validate:"omitempty,min=1,dive,min=3"`
    // ...
}

我正在使用 "github.com/go-playground/validator/v10" 包的验证器验证 Book 结构:

    book := &Book{}
    if err := json.Unmarshal(data, book); err != nil {
        return nil, err
    }

    v := validator.New()
    if err := v.Struct(book); err != nil {
        return nil, err
    }

工作内容:

{
    "title": "A Book"
}

出错信息为:"键:'Book.Authors' 错误:'Authors' 字段上的'min'标签验证失败"

{
    "title": "A Book",
    "authors": []

}

1个回答

5

这是因为您的作者验证字符串是"omitempty,min=1,dive,min=3"。空片的长度为0,小于1。

如果您将验证字符串替换为"omitempty,min=0,dive,min=3",则可以通过。


谢谢,它有效了!我以为min=1只适用于长度为1的数组。 - icaptan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接