3 回答

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 選擇性的東西

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"

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將被省略。
- 3 回答
- 0 關(guān)注
- 190 瀏覽
添加回答
舉報(bào)