3 回答
TA贡献1834条经验 获得超8个赞
为什么你只是这样做下面
type SubPaper struct {
PID int `json:"pID"`
PPwd string `json:"pPwd"`
}
type Paper struct {
SubPaper
PTitle string `json:"pTitle"`
PDesc string `json:"pDesc"`
}
如果你想要完整的回应,然后整理报纸
和 SubPaper 选择性的东西
TA贡献1871条经验 获得超13个赞
在标签中使用 omitempty。创建结构体实例时无需指定要包含的项目。
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”:“标题 1”,“pDesc”:“描述 1”}
唯一的问题是,如果 PID 明确为 0,那么它仍然会忽略它。
喜欢:
Paper{PTitle: "Title 1", PDesc: "Desc 1", PID:0} 那么它仍然会打印 {"pTitle":"Title 1","pDesc":"Desc 1"}
另一种使用嵌入类型的方法:
请注意,嵌入类型必须是指针,以便它可以为 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”:“标题 1”,“pDesc”:“描述 1”}
如果需要纸张的嵌套内部结构,请将其标记为 *Paperjson:"paper,omitempty"
TA贡献1804条经验 获得超3个赞
也许最简单的方法是创建一个 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}
现在,当编组时BriefPaper,字段PID和PPwd将被省略。
- 3 回答
- 0 关注
- 125 浏览
添加回答
举报