如何在Golang中使用struct和interface来获得不同的json构造

时间:2017-06-11 03:06:35

标签: json go struct interface

它可以得到不同的json构造:

类型1:

{"errcode": 0, "errmsg": "OK", "data": {"name": "Jolly", "age": 19}}

类型2:

{"errcode": 0, "errmsg": "OK", "data": {"friend": "Lisa", "country": "US"}}

我知道我可以通过定义4个结构来获得这些结构:

type Base1 struct {
    ErrCode int    `json:"errcode"`
    ErrMsg  string `json:"errmsg"`
    Data    Person `json:"data"`
}
type Person struct {
    Age   int    `json:"age"`
    Name  string `json:"name"`
}

type Base2 struct {
    ErrCode int    `json:"errcode"`
    ErrMsg  string `json:"errmsg"`
    Data    Info   `json:"data"`
}
type Info struct {
    Friend   string    `json:"friend"`
    Country  string    `json:"country"`
}

如果我想加载json 1,只需输入data := Base1{}

即可

如果我想加载json 2,只需输入data := Base2{}

即可

但是我想知道如何通过3个结构和使用接口来获取它们,因为我有很多提供json构造的API,它们的第一个层与struct Base

相同

喜欢

type Base struct {
    ErrCode int         `json:"errcode"`
    ErrMsg  string      `json:"errmsg"`
    Data    interface   `json:"data"`
}

如何编写data := Base{...}并让它成为struct Base1,Base2

0 个答案:

没有答案