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

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

JSON解碼器無法將對象解碼為對象

JSON解碼器無法將對象解碼為對象

Go
繁星淼淼 2022-10-17 16:00:09
type MiddleMan struct {    User CompletedByUser `json:"user"`}type CompletedByUser struct {    DisplayName string `json:"displayName"`    Id          string `json:"id"`}使用以下類型,我運行代碼shorterJsonString := `{    "user":{        "displayName":null,        "id":"a03dfee5-a754-4eb9"    } }`if !json.Valid([]byte(shorterJsonString)) {    log.Println("Not valid")}var middleMan models.MiddleMannewReader := strings.NewReader(shorterJsonString)json.NewDecoder(newReader).Decode(&middleMan)log.Println(middleMan)不幸的是,對于嵌套對象,解碼器似乎被破壞了。打印出來的不是吐出實際的物體,而是打印出來{{ a03dfee5-a754-4eb9 }}它似乎將整個事物展平到 id 字段中。這里發(fā)生了什么?
查看完整描述

1 回答

?
白板的微信

TA貢獻1883條經(jīng)驗 獲得超3個贊

您期望會發(fā)生什么/被打印出來?

log包(使用fmt包)打印用大括號括起來的結(jié)構(gòu),列出用空格分隔的字段值。

MiddleMan有一個字段,所以它看起來像這樣:

{field}

field另一個struct類型在哪里CompletedByUser,它有 2 個字段,所以它看起來像這樣:

{{field1 field2}}

wherefieldstring類型是空字符串,因此您會看到field2前綴為空格的值:

{{ a03dfee5-a754-4eb9}}

如果您打印它添加字段名稱:

log.Printf("%+v", middleMan)

您將看到如下輸出:

{User:{DisplayName: Id:a03dfee5-a754-4eb9}}

使用另一種(Go 語法)格式:

log.Printf("%#v", middleMan)

輸出:

main.MiddleMan{User:main.CompletedByUser{DisplayName:"", Id:"a03dfee5-a754-4eb9"}}

在Go Playground上試試這個。


查看完整回答
反對 回復 2022-10-17
  • 1 回答
  • 0 關(guān)注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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