As shown in the code above, one can use json:",omitempty" to omit certain fields in a struct to appear in json.
For example
type ColorGroup struct { ID int `json:",omitempty"` Name string Colors []string } type Total struct { A ColorGroup`json:",omitempty"` B string`json:",omitempty"` } group := Total{ A: ColorGroup{}, } In this case, B won't show up in json.Marshal(group)
However, if
group := Total{ B:"abc", } A still shows up in json.Marshal(group)
{"A":{"Name":"","Colors":null},"B":"abc"} Question is how do we get only
{"B":"abc"} EDIT: After some googling, here is a suggestion use pointer, in other words, turn Total into
type Total struct { A *ColorGroup`json:",omitempty"` B string`json:",omitempty"` }