用omitempty來過濾掉空的property造成bool false被過濾掉
一般來說我們會這樣定義Struct來接收前端請求的POST Body
type UpdateReq struct {
Name string `json:"name,omitempty" bson:"name,omitempty"`
Enabled bool `json:"enabled,omitempty" bson:"enabled,omitempty"`
}
那假設POST Body是這樣
{
enabled: false
}
此時我們利用gin的BindJSON來Unmarshal
var body domain.UpdateReq
c.BindJSON(&body)
結果印出來會是
{
}
上述結果的name被我們過濾掉是正常,但enabled就我們的需求上來看,不應該被過濾掉才對。
所以我們應該將bool、int這類的型態宣告為指標,如下:
type UpdateReq struct {
Name string `json:"name,omitempty" bson:"name,omitempty"`
Enabled *bool `json:"enabled,omitempty" bson:"enabled,omitempty"`
}
留言
張貼留言