我有一个使用 json 和 bson 标签的结构:
type PlayerGameStats struct {
Hitting struct {
Overall hittingStats `json:"overall,omitempty" bson:"overall,omitempty"`
SeasonTd struct {
OBP float64 `json:"obp,omitempty" bson:"obp,omitempty"`
OPS float64 `json:"ops,omitempty" bson:"ops,omitempty"`
SLG float64 `json:"slg,omitempty" bson:"slg,omitempty"`
hittingStats `bson:",inline"`
} `json:"seasontd,omitempty" bson:"season_td,omitempty"`
} `json:"hitting,omitempty" bson:"hitting,omitempty"`
}
type hittingStats struct {
AB int `json:"ab,omitempty" bson:"ab,omitempty"`
RBI int `json:"rbi,omitempty" bson:"rbi,omitempty"`
AP int `json:"ap,omitempty" bson:"ap,omitempty"`
Onbase struct {
S int `json:"s,omitempty" bson:"s,omitempty"`
D int `json:"d,omitempty" bson:"d,omitempty"`
T int `json:"t,omitempty" bson:"t,omitempty"`
HR int `json:"hr,omitempty" bson:"hr,omitempty"`
TB int `json:"tb,omitempty" bson:"tb,omitempty"`
BB int `json:"bb,omitempty" bson:"bb,omitempty"`
H int `json:"h,omitempty" bson:"h,omitempty"`
} `json:"onbase,omitempty" bson:"onbase,omitempty"`
}
当我解组收到的响应时,我在嵌入的
hittingStats
字段中获得了正确的值,但是当我将 PlayerGameStats
插入到我的集合中时,嵌入的字段丢失了。 PlayerGameStats
包含在另一个更高级别的结构中,但我认为这不是问题。
根据我对
inline
标签的理解,它应该“如果字段类型是结构体或映射字段,则该字段在编组时将被展平,而在解组时将被展平。”并且从其他堆栈溢出帖子来看,这似乎是这样应该有效吗?
感谢所有帮助!
我尝试不嵌入字段并使用
inline
标签,但这显然破坏了我需要解组的 json 形式。
我实际上继续调试并意识到解决了问题。
hittingStats
需要导出(`HittingStats)!简单修复,现在可以按预期工作:)
不确定我是否应该将其留在这里或删除它?