↓こんな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
}