如何在Golang中使用validator包验证JSON中的字符串数组?
验证Go中字符串数组的元素是否属于指定取值范围
直接给[]string类型字段添加oneof标签无法实现数组元素的取值校验,因为默认情况下oneof规则仅作用于单个字段,不会遍历数组元素。
你需要结合dive标签来实现需求,dive的作用是让validator深入遍历容器类型(比如数组、切片、map)的每个元素,并对元素应用后续的验证规则。修改后的代码如下:
type ResponseEntity struct { Values []string `json:"values" validate:"dive,oneof=VALUE1 VALUE2 VALUE3"` }
这样配置后,validator会检查Values数组中的每一个字符串,确保它们只能是VALUE1、VALUE2或VALUE3中的某一个。
如果允许Values字段为空数组或不出现该字段,可以额外添加omitempty标签:
type ResponseEntity struct { Values []string `json:"values" validate:"omitempty,dive,oneof=VALUE1 VALUE2 VALUE3"` }
内容的提问来源于stack exchange,提问作者Hugo-Cruz
相关产品推荐
相关产品推荐

