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

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

Golang 具有相同 json 標簽名稱的多個字段

Golang 具有相同 json 標簽名稱的多個字段

Go
寶慕林4294392 2022-06-13 10:54:31
如何將 JSON 解組為包含 2 個字段(UserName和Name)的結(jié)構(gòu),其中包含相同的 JSON 標記名稱(name)?package mainimport (    "encoding/json"    "fmt")type User struct {    UserName string `json:"name,omitempty"`    Name     string `json:"name,omitempty"`}func main() {    data := []byte(`                {                    "name":"kishore"                }            `)    user := &User{}    err := json.Unmarshal(data, &user)    if err != nil {        panic(err)    }    fmt.Printf("value of user : %+v\n", user)}實際輸出: value of user : &{UserName: Name:}預期輸出: value of user : &{UserName:kishore Name:kishore}如何獲得UserNameandName字段填充kishore?當我查看Json的源代碼時,我發(fā)現(xiàn)如果 2 個頂級字段具有相同的標簽名稱,它們就會丟棄。但是代碼中的這條評論讓我想到是否有辦法標記兩者either both tagged or neither taggedfunc dominantField(fields []field) (field, bool) {    // The fields are sorted in increasing index-length order, then by presence of tag.    // That means that the first field is the dominant one. We need only check    // for error cases: two fields at top level, either both tagged or neither tagged.    if len(fields) > 1 && len(fields[0].index) == len(fields[1].index) && fields[0].tag == fields[1].tag {        return field{}, false    }    return fields[0], true}游樂場鏈接: https: //play.golang.org/p/TN9IQ8lFR6a
查看完整描述

2 回答

?
蠱毒傳說

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

這實際上是重復結(jié)構(gòu)標簽導致 unmarshaller 忽略它的情況。根據(jù)官方文檔-“3)否則有多個字段,所有字段都被忽略;不會發(fā)生錯誤?!?/p>

https://golang.org/pkg/encoding/json/

你可能應(yīng)該做的是“去檢查”,看看你的代碼是否有這樣的問題。


查看完整回答
反對 回復 2022-06-13
?
神不在的星期二

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

type User struct {

    UserName string `json:"name,omitempty"`

    Name     string `json:"-"`

}


func (u *User) UnmarshalJSON(data []byte) error {

    type U User

    if err := json.Unmarshal(data, (*U)(u)); err != nil {

        return err

    }

    u.Name = u.UserName

    return nil

}

https://play.golang.org/p/PRuigiBfwWv


查看完整回答
反對 回復 2022-06-13
  • 2 回答
  • 0 關(guān)注
  • 461 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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