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

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

解組可能返回或不返回?cái)?shù)組的 JSON?

解組可能返回或不返回?cái)?shù)組的 JSON?

Go
桃花長(zhǎng)相依 2021-11-01 17:26:24
我正在從第三方網(wǎng)站(家庭用電量)檢索 JSON,并且根據(jù)我從該網(wǎng)站請(qǐng)求的內(nèi)容,返回的 JSON 可能是也可能不是數(shù)組。例如,如果我請(qǐng)求我的智能電表列表,我會(huì)得到這個(gè)(結(jié)果被截?cái)?,因?yàn)槌叽绾艽螅簕"gwrcmds":{"gwrcmd":{"gcmd":"SPA_UserGetSmartMeterList","gdata":{"gip":{"version":"1"...其中g(shù)wrcmd是單個(gè)元素。但是如果我要求在過去半小時(shí)內(nèi)用電,我會(huì)得到這個(gè):{"gwrcmds":{"gwrcmd":[{"gcmd":"DeviceGetChart","gdata":{"gip":{"version":"1" ...看看gwrcmd現(xiàn)在如何成為一個(gè)數(shù)組?在我的 Go 應(yīng)用程序中,我有一個(gè)看起來像這樣的結(jié)構(gòu)(再次被截?cái)啵驗(yàn)樗掷m(xù)了一段時(shí)間。在“版本”下面有更多的子結(jié)構(gòu)和屬性:type Response struct {     Gwrcmds struct {         Gwrcmd struct {             Gcmd  string             Gdata struct {                 Gip struct {                     Version string如果gwrcmd是一個(gè)數(shù)組,Gwrcmd需要是一個(gè)[]struct { },但如果不是,它只是一個(gè)普通的舊struct { }問題是,json.Unmarshal如果 JSON 有一個(gè)數(shù)組而結(jié)構(gòu)沒有切片(反之亦然),則只會(huì)返回錯(cuò)誤。我是否需要?jiǎng)?chuàng)建第二個(gè)結(jié)構(gòu)體來復(fù)制第一個(gè)結(jié)構(gòu)體(除了用 a[]struct { }代替),還是有更好的方法來做到這一點(diǎn)?我想到了一些接口,但我還沒有真正接觸過那些,所以我不能 100% 確定它們。
查看完整描述

2 回答

?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊

您可以嘗試使自定義 json 解組方法,例如


func (a *GwrcmCustom) UnmarshalJSON(b []byte) (err error) {

    g, ga := Gwrcmd{}, []Gwrcmd{}

    if err = json.Unmarshal(b, &g); err == nil {

        *a = make([]Gwrcmd, 1)

        []Gwrcmd(*a)[0] = Gwrcmd(g)

        return

    }

    if err = json.Unmarshal(b, &ga); err == nil {

        *a = GwrcmCustom(ga)

        return

    }

    return

}

GwrcmCustom 是自定義類型,切片 Gwrcm


type GwrcmCustom []Gwrcmd

所以我們總是會(huì)得到切片


試試這個(gè) Go playground


我希望這個(gè)能幫上忙


查看完整回答
反對(duì) 回復(fù) 2021-11-01
  • 2 回答
  • 0 關(guān)注
  • 236 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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