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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang json.Unmarshal 沒有按預(yù)期工作

Golang json.Unmarshal 沒有按預(yù)期工作

Go
哆啦的時光機(jī) 2022-11-15 10:41:44
我試圖解組來自 vcenter rest api 的 json 響應(yīng)。當(dāng)簡單地打印響應(yīng)正文時,它看起來像下面的 o/p{"value":[{"memory_size_MiB":16384,"vm":"vm-10236","name":"Normal_Windows_192.168.1.10","power_state":"POWERED_OFF","cpu_count":8},{"memory_size_MiB":8192,"vm":"vm-10238","name":"Normal_Windows_192.168.1.11","power_state":"POWERED_OFF","cpu_count":4}]}我已經(jīng)導(dǎo)出了結(jié)構(gòu)和結(jié)構(gòu)字段,但是像 memory_size_MiB、power_state、cpu_count 這樣的字段沒有被解組。打印結(jié)構(gòu)時,它如下所示:-{Value:[{Mem:0 Vm:vm-10236 Name:Normal_Windows_192.168.1.10 Powerstat: Cpu:0} {Mem:0 Vm:vm-10238 Name:Normal_Windows_192.168.1.11 Powerstat: Cpu:0} {Mem:0 Vm:vm-10582 Name:Normal_Windows_192.168.1.12 Powerstat: Cpu:0}]}% 下面是我的 main.go    package main        import (...    )    type SessionData struct {        VmwareApiSessionId string `json:"value"`    }    //{"memory_size_MiB":16384,"vm":"vm-10236","name":"Normal_Windows_192.168.19.100","power_state":"POWERED_OFF","cpu_count":8}    type Vm struct {        Mem int `json: "memory_size_MiB"`        Vm string `json: "vm"`        Name string `json: "name"`        Powerstat string `json: "power_state"`        Cpu int `json: "cpu_count"`    }    //{Value:[{Mem:0 Vm:vm-10236 Name:Normal_Windows_192.168.1.10 Powerstat: Cpu:0} {Mem:0 Vm:vm-10238 Name:Normal_Windows_192.168.1.11 Powerstat: Cpu:0} {Mem:0 Vm:vm-10582 Name:Normal_Windows_192.168.1.12 Powerstat: Cpu:0}]}    type ColVmList struct {        Value []Vm `json: "value"`    }    func getVmList(sessid string,cli *http.Client) ColVmList {        vms := ColVmList{}        req,err:=http.NewRequest("GET","https://sandbox.vmware.local/rest/vcenter/vm",nil)        req.Header.Add("vmware-api-session-id",sessid)        resp,err := cli.Do(req)        if err != nil {            log.Fatal("Error %s", err)        }        defer resp.Body.Close()        body, err := ioutil.ReadAll(resp.Body)        fmt.Println(string(body))        err = json.Unmarshal([]byte(body),&vms)        if err != nil {            log.Fatal("error %s", err)        }        return vms    }  
查看完整描述

1 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗 獲得超7個贊

您的結(jié)構(gòu)標(biāo)簽格式不正確。刪除結(jié)構(gòu)標(biāo)簽中json:的字符串和字符串之間的空格。"..."即它必須json:"..."不是json: "..."。


某些字段即使使用格式不正確的結(jié)構(gòu)標(biāo)記也能正確解組的原因是因為字段的名稱與 json 屬性名稱匹配。


func main() {

    data := []byte(`{"memory_size_MiB":16384}`)


    var obj1 struct {

        Mem int `json: "memory_size_MiB"`

    }

    if err := json.Unmarshal(data, &obj1); err != nil {

        panic(err)

    }

    fmt.Println(obj1)


    var obj2 struct {

        Mem int `json:"memory_size_MiB"`

    }

    if err := json.Unmarshal(data, &obj2); err != nil {

        panic(err)

    }

    fmt.Println(obj2)

}

https://go.dev/play/p/gUR5ed2n0D1


查看完整回答
反對 回復(fù) 2022-11-15
  • 1 回答
  • 0 關(guān)注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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