第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

需要以 [] 這種格式傳遞空切片而不是 ""

需要以 [] 這種格式傳遞空切片而不是 ""

Go
白板的微信 2022-11-23 20:10:26
我有一個(gè)帶有 body 屬性的 api輸入 Reg struct{ Env []string json:"env" }在調(diào)用 api 時(shí),我需要將“env”的值作為可選參數(shù)傳遞。即以這種格式env: [],而不是env: ""  任何人都可以幫助。我試過(guò)使用 len(env)==0 但它將 "" 和 [] 都設(shè)為空。我也嘗試過(guò)使用 reflect.ValueOf(Reg.Env).Kind() == reflect.Slice 來(lái)區(qū)分 "" 和 [] 但它只將這兩個(gè)值作為切片。
查看完整描述

2 回答

?
慕尼黑8549860

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


查看完整回答
反對(duì) 回復(fù) 2022-11-23
?
慕沐林林

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


查看完整回答
反對(duì) 回復(fù) 2022-11-23
  • 2 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)