You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:22:02