猿问

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

我想跳过对特定字段的 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": []


}


慕神8447489
浏览 123回答 1
1回答

12345678_0001

这是因为您的 Authors 验证字符串是"omitempty,min=1,dive,min=3".&nbsp;空切片的长度为 0,即 <1。如果您将验证字符串替换为"omitempty,min=0,dive,min=3"instead,它将通过。
随时随地看视频慕课网APP

相关分类

Go
我要回答