我有一个结构体,长这样
type Data struct {
Foo string `json:"foo" binding:"required"`
}
我使用ShouldBind将查询参数或JSON body绑定到结构体中。
data := Data{}
err := ctx.ShouldBind(&data)
我想知道在字符串字段中去除空格的最佳实践是什么?
transform {"foo": " bar "} to struct {"foo": "bar"}
- 我曾尝试使用自定义字符串类型并添加自定义的UnmarshalJSON函数,但如果是查询,则无法用于ctx.shouldBind。
type Data struct {
Foo TrimSpaceString `json:"foo" binding:"required"`
}
type TrimSpaceString string
func (t *TrimSpaceString) UnmarshalJSON(data []byte) error {
data = bytes.Trim(data, "\"")
data = bytes.Trim(data, " ")
*t = TrimSpaceString(strings.TrimSpace(string(data)))
return nil
}
- 我也尝试使用conform,并为结构体添加标记。但是在绑定后,我必须添加conform.Strings(data),这很不方便。
type Data struct {
Foo TrimSpaceString `json:"foo" binding:"required" conform:"trim"`
}
err := ctx.ShouldBind(&data)
conform.Strings(&data)
- 我是否应该自定义一个绑定和在绑定内部修剪字符串?
json.Compact
修剪不重要的空格。字符串内的空格不是无关紧要的。 - blackgreen