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 關注
- 106 瀏覽
添加回答
舉報