【发布时间】:2015-10-31 02:03:45
【问题描述】:
如上面的代码所示,可以使用json:",omitempty" 省略结构中的某些字段以出现在json 中。
例如
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{},
}
在这种情况下,B 不会出现在 json.Marshal(group) 中
但是,如果
group := Total{
B:"abc",
}
A 仍会出现在 json.Marshal(group) 中
{"A":{"Name":"","Colors":null},"B":"abc"}
问题是我们如何得到唯一的
{"B":"abc"}
编辑:
经过一番谷歌搜索,这里有一个建议use pointer,换句话说,把Total变成
type Total struct {
A *ColorGroup`json:",omitempty"`
B string`json:",omitempty"`
}
【问题讨论】:
-
如果这对某些人不起作用,结构标记中省略前的逗号很重要。当我忽略它时,该字段总是被忽略,即使它不是空的。
-
以防万一有人遇到我的问题...不要在逗号和省略号之间放置空格。
-
也许这个答案会有所帮助? stackoverflow.com/a/18088527/2271198