2 回答

TA贡献1808条经验 获得超4个赞
您不能在运行时将“Secret”脚本标记从 更改为 。json:"-"
json:"secret"
但是,可以使用 选项 ,指定如果字段具有空值(在本例中为空字符串),则应从编码中省略该字段。omitempty
json:"secret,omitempty"
当不满足条件时,您只需将字段设置为空字符串(这可以通过数据库完成),它就不会显示在json数据中。Secret

TA贡献1803条经验 获得超6个赞
你可以编写自己的MarshalJSON/UnmarshalJSON方法。
type MediaFile struct {
ID string
Secret string
Title string
}
type jsonMediaFile struct {
ID string `json:"id"`
Title string `json:"title"`
}
type jsonSecretMediaFile struct {
*jsonMediaFile
Secret string `json:"secret"`
}
func (mf *MediaFile) MarshalJSON() ([]byte, error) {
jsonMF := jsonMediaFile{
ID: mf.ID,
Title: mf.Title,
}
if isNeedMarshalSecret() {
return json.Marshal(jsonSecretMediaFile{
jsonMediaFile: &jsonMF,
Secret: mf.Secret,
})
}
return json.Marshal(jsonMF)
}
- 2 回答
- 0 关注
- 90 浏览
添加回答
举报