【程式語言 — Go】關於JSON序列化、反序列化

阿Han
·
·
IPFS
·
程式語言Golang的二三事

圖片來源

用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"`
}

結果如我們的預期

{
    enabled: false
}


CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!

阿Han 文字是留下記錄的一種媒介,將知識吸收轉化後輸出成文字進行保存。 ☕️ https://liker.land/willhanchen/civic
  • 来自作者
  • 相关推荐

【Google Sheet 好好玩】 強大的翻譯工具庫

【勞工權益知多少】原來工資不只有基本薪資,還包含了經常性薪資、非經常性薪資...

【金融理財系列】資源稀缺的八二法則