gpt4 book ai didi

go - 未加载时如何忽略JSON输出中的关联字段?

转载 作者:行者123 更新时间:2023-12-01 22:06:03 24 4
gpt4 key购买 nike

在我的gorm模型中,我具有“用户”和“个人资料”:

type User struct {
ID int
Username string
Password string `json:"-"`

Profile Profile
}

type Profile struct {
UserID int
Gender string
Places string

//...And many more fields
}
当我通过以下方式寻找个人资料的完整显示时:
db.Preload("Profile").Where("id = ?", 1).First(&user)
c.JSON(200, user)
客户端将收到的JSON结果非常好:
{
"ID": 1,
"Username": {
"String": "",
"Valid": false
},
"Profile": {
"UserID": 1,
"Gender": "men",
"Places": "Home and staying home",
// ...And many more
},
}
但是,当我只想列出ID和Username两个字段时,即使我没有Preload()或Related()配置文件,也仍然有一个空集:
db.Where("id = ?", 1).First(&user)
c.JSON(200, user)

// Result
{
"ID": 1,
"Username": {
"String": "",
"Valid": false
},
//below is redundant in this situation
"Profile": {
"UserID": 0,
"Gender": "",
"Places": "",
// ...And many more 0 or "" fields
},
}
我的问题是每次未加载时如何忽略JSON响应中的Profile字段?为了节省一些转让费用

最佳答案

如果要忽略它们,则应使用该结构的指针。如果未加载,它将变为nil,并且不会出现在JSON中

type User struct {
ID int
Username string
Password string `json:"-"`

Profile *Profile `json:",omitempty"`
}

关于go - 未加载时如何忽略JSON输出中的关联字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61609409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com