2 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
如果檢查 的錯(cuò)誤json.Unmarshal,例如,您將知道用戶是否傳遞了無(wú)效輸入。
var r struct { Env []string `json:"env"` }
if err := json.Unmarshal([]byte(`{"env": ""}`), &r); err != nil {
fmt.Println(err)
}
產(chǎn)生此錯(cuò)誤消息:
json: cannot unmarshal string into Go struct field .env of type []string
https://go.dev/play/p/LozhJ14C7zj
使用解碼器時(shí)也會(huì)發(fā)生同樣的情況。即來(lái)自 http 請(qǐng)求正文。
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貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
根據(jù)您需要發(fā)送的內(nèi)容,有多種選擇:
情況 A: Reg{}將被 json 序列化為{"env": null}
案例 B: Reg{Env: []string{} }將被 json 序列化為{"env": []}
案例 C:如果,omitempty像這樣添加到 struct 標(biāo)簽中:
type Reg struct {
Env []string `json:"env,omitempty"`
}
然后Reg{}將被json序列化為{}
請(qǐng)參閱此處的代碼示例:https ://go.dev/play/p/lKI91VCoI0V
- 2 回答
- 0 關(guān)注
- 137 瀏覽
添加回答
舉報(bào)