【发布时间】:2017-11-09 16:09:55
【问题描述】:
我的结构:
type User struct {
FirstName string `json:"firstname, omitempty" validate:"required"`
LastName string `json:"lastname, omitempty" validate:"required"`
NumberofDays int `json:"numberofdays, string" validate:"min=0,max=100"`
}
NumberofDays 的值作为字符串从服务器传递,但我想检查它是否在范围内并存储为 int。
例如:user := &User{"Michael","Msk","3"}
我得到“无法将字符串解组为 int 类型的 Go 值”。
我不确定如何将类型转换为 int 并进行验证
【问题讨论】:
-
您已将 NumberofDays 定义为 struct 标签中的一种字符串类型,您只能将 validate 标志与 int 类型一起使用。所以将字符串更改为 int 并传入 3 而不是 "3"
-
@retcentroot 所有值都作为字符串从服务器传递。我无法改变这一点。
-
见我提供的例子。我还提供了一个使用“3”的替代方案。你可能无法控制这些值,但你绝对可以改变你的结构
-
根据他们试图unmarshal而不是marshal的问题,但也许OP可以澄清。
标签: json go unmarshalling