我试图弄清楚如何在另一个结构中嵌入一个匿名结构,以便进行json解析。
我有一个"临时演员"包含取决于各种因素的不同属性的地图。此地图是较大的json blob的字段。我想完全模拟" extras"的各种可能性。映射,所以我可以避免使用类型断言。我想要#34;额外"结构与基础结构(json的其余部分)分开。我知道我可以这样做:
type TestObj1 struct {
ExtraObj `json:"extras"`
}
type ExtraObj struct {
Foo string `json:"foo"`
}
这很好用,因为json完全解析了我的期望,我可以像Foo
一样直接访问testObj1.Foo
。这种方法的问题在于,现在我每种可能有2种不同的结构" extras"变化,而不是1.那么我可以尝试这样的事情:
type TestObj2 struct {
Extras struct {
Foo string `json:"foo"`
} `json:"extras"`
}
这也按预期解析了json,并且每个变体都需要2个结构。但问题是,要访问Foo
,我需要像Extras
那样经历testObj2.Extras.Foo
。我希望两全其美的解决方案都是如此:
type TestObj3 struct {
struct {
Foo string `json:"foo"`
} `json:"extras"`
}
但这是一个编译错误。我为此快速playground link。
有没有办法完成这样的事情,还是语言不可能?非常感谢您的帮助!
答案 0 :(得分:-1)
尝试以下操作:
type TestObj1 struct {
ExO ExtraObj `json:"extras"`
}
type ExtraObj struct {
Foo string `json:"foo"`
}
我没有亲自测试,但应该可以。