go playground
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"`
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…