↓こんなStructがあったとして、JSONに変換した時にOrderItem
プロパティが空だったら、JSONから省略したい。
HogeSales struct {
IsDirty bool `json:"-"`
Id string `json:"Id,omitempty"`
Amount int `json:"Amount,omitempty"`
OrderItem OrderItem `json:"OrderItem,omitempty"`
}
json.Marshal(HogeSales)
でJSONに変換した時に "OrderItem": {}
となることを防ぐ方法。
このOrderItem項目すら消したい場合。
ちなみに omitempty
される条件は下記
false, 0, any nil pointer or interface value, and any array, slice, map, or string of length zero
そう、Struct型である以上、Omitされない。。。
対処方法は簡単 Pointer
にして nil
を入れておけばOK
HogeSales struct {
IsDirty bool `json:"-"`
Id string `json:"Id,omitempty"`
Amount int `json:"Amount,omitempty"`
OrderItem *OrderItem `json:"OrderItem,omitempty"`
}
func (h *HogeSales) Clear() {
h.OrderItem = nil
}