2 回答
TA贡献1818条经验 获得超11个赞
如果检查 的错误json.Unmarshal,例如,您将知道用户是否传递了无效输入。
var r struct { Env []string `json:"env"` }
if err := json.Unmarshal([]byte(`{"env": ""}`), &r); err != nil {
fmt.Println(err)
}
产生此错误消息:
json: cannot unmarshal string into Go struct field .env of type []string
https://go.dev/play/p/LozhJ14C7zj
使用解码器时也会发生同样的情况。即来自 http 请求正文。
var r struct { Env []string `json:"env"` }
dec := json.NewDecoder(strings.NewReader(`{"env": ""}`))
if err := dec.Decode(&r); err != nil { fmt.Println(err) }
https://go.dev/play/p/_XpY3jquxVx
TA贡献2016条经验 获得超9个赞
根据您需要发送的内容,有多种选择:
情况 A: Reg{}将被 json 序列化为{"env": null}
案例 B: Reg{Env: []string{} }将被 json 序列化为{"env": []}
案例 C:如果,omitempty像这样添加到 struct 标签中:
type Reg struct {
Env []string `json:"env,omitempty"`
}
然后Reg{}将被json序列化为{}
请参阅此处的代码示例:https ://go.dev/play/p/lKI91VCoI0V
- 2 回答
- 0 关注
- 87 浏览
添加回答
举报