嵌入匿名结构

时间:2017-08-05 05:03:31

标签: go

我试图弄清楚如何在另一个结构中嵌入一个匿名结构,以便进行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

有没有办法完成这样的事情,还是语言不可能?非常感谢您的帮助!

1 个答案:

答案 0 :(得分:-1)

尝试以下操作:

type TestObj1 struct {
    ExO ExtraObj `json:"extras"`
}

type ExtraObj struct {
    Foo string `json:"foo"`
}

我没有亲自测试,但应该可以。