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

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

如何有選擇地為結(jié)構(gòu)封送 JSON?

如何有選擇地為結(jié)構(gòu)封送 JSON?

Go
叮當(dāng)貓咪 2023-07-04 10:04:22
我有一個(gè)結(jié)構(gòu):type Paper struct {    PID    int    `json:"pID"`    PTitle string `json:"pTitle"`    PDesc  string `json:"pDesc"`    PPwd   string `json:"pPwd"`}大多數(shù)情況下,我會(huì)將整個(gè)結(jié)構(gòu)編碼為 JSON。然而,有時(shí),我需要該結(jié)構(gòu)的簡(jiǎn)短版本;即對(duì)一些屬性進(jìn)行編碼,我應(yīng)該如何實(shí)現(xiàn)這個(gè)功能?type BriefPaper struct {    PID    int    `json:"-"`      // not needed    PTitle string `json:"pTitle"`    PDesc  string `json:"pDesc"`    PPwd   string `json:"-"`      // not needed}我正在考慮創(chuàng)建一個(gè)子集結(jié)構(gòu),例如BriefPaper = SUBSET(Paper),但不確定如何在 Golang 中實(shí)現(xiàn)它。我希望我能做這樣的事情:p := Paper{ /* ... */ }pBrief := BriefPaper{}pBrief = p;p.MarshalJSON(); // if need full JSON, then marshal PaperpBrief.MarshalJSON(); // else, only encode some of the required properties是否可以?去
查看完整描述

3 回答

?
MMMHUHU

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

為什么你只是這樣做下面


type SubPaper struct {

    PID    int    `json:"pID"`

    PPwd   string `json:"pPwd"`

}


type Paper struct {

    SubPaper

    PTitle string `json:"pTitle"`

    PDesc  string `json:"pDesc"`

}

如果你想要完整的回應(yīng),然后整理報(bào)紙


和 SubPaper 選擇性的東西


查看完整回答
反對(duì) 回復(fù) 2023-07-04
?
慕桂英4014372

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

在標(biāo)簽中使用 omitempty。創(chuàng)建結(jié)構(gòu)體實(shí)例時(shí)無(wú)需指定要包含的項(xiàng)目。


type Paper struct {

    PID    int    `json:"pID,omitempty"`

    PTitle string `json:"pTitle"`

    PDesc  string `json:"pDesc"`

    PPwd   string `json:"pPwd,omitempty"`

}


func main() {

    u := Paper{PTitle: "Title 1", PDesc: "Desc 1"}

    b, _ := json.Marshal(u)


    fmt.Println(string(b))

}

打印:{“pTitle”:“標(biāo)題 1”,“pDesc”:“描述 1”}


唯一的問(wèn)題是,如果 PID 明確為 0,那么它仍然會(huì)忽略它。


喜歡:


Paper{PTitle: "Title 1", PDesc: "Desc 1", PID:0} 那么它仍然會(huì)打印 {"pTitle":"Title 1","pDesc":"Desc 1"}


另一種使用嵌入類(lèi)型的方法:


請(qǐng)注意,嵌入類(lèi)型必須是指針,以便它可以為 nil,然后 omitempty 可以排除它。


type Paper struct {

    PID    int    `json:"pID"`    

    PPwd   string `json:"pPwd"`

}


type BriefPaper struct {    

    PTitle string `json:"pTitle"`

    PDesc  string `json:"pDesc"`

    *Paper `json:",omitempty"`  

}


func main() {

    u := BriefPaper{PTitle: "Title 1", PDesc: "Desc 1"}

    b, _ := json.Marshal(u)


    fmt.Println(string(b))

}

打?。簕“pTitle”:“標(biāo)題 1”,“pDesc”:“描述 1”}


如果需要紙張的嵌套內(nèi)部結(jié)構(gòu),請(qǐng)將其標(biāo)記為 *Paperjson:"paper,omitempty"


查看完整回答
反對(duì) 回復(fù) 2023-07-04
?
狐的傳說(shuō)

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

也許最簡(jiǎn)單的方法是創(chuàng)建一個(gè) struct embeds Paper,并隱藏要隱藏的字段:


type Paper struct {

    PID    int    `json:"pID"`

    PTitle string `json:"pTitle"`

    PDesc  string `json:"pDesc"`

    PPwd   string `json:"pPwd"`

}


type BriefPaper struct {

    Paper

    PID    int    `json:"pID,omitempty"`  // Just make sure you 

    PPwd   string `json:"pPwd,omitempty"` // don't set these fields!

}


p := Paper{ /* ... */ }

pBrief := BriefPaper{Paper: p}

現(xiàn)在,當(dāng)編組時(shí)BriefPaper,字段PID和PPwd將被省略。


查看完整回答
反對(duì) 回復(fù) 2023-07-04
  • 3 回答
  • 0 關(guān)注
  • 190 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(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)