2 回答

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個贊
您不能在運(yùn)行時將“Secret”腳本標(biāo)記從 更改為 。json:"-"
json:"secret"
但是,可以使用 選項(xiàng) ,指定如果字段具有空值(在本例中為空字符串),則應(yīng)從編碼中省略該字段。omitempty
json:"secret,omitempty"
當(dāng)不滿足條件時,您只需將字段設(shè)置為空字符串(這可以通過數(shù)據(jù)庫完成),它就不會顯示在json數(shù)據(jù)中。Secret

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超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 關(guān)注
- 109 瀏覽
添加回答
舉報