Golang 可变字段

Golang Changeable field

我想知道是否可以为 golang 制作一个可变结构。 事情是这样的。 有 JSON 个不同的对象。 它始终包含“元”,但“数据”将如下更改。

{"meta":{"A":"AA, "B":"BB"}, "data":{"C":"CC"}}
{"meta":{"A":"DD, "B":"EE"}, "data":{"F":"FF"}}

在我的 golang 代码中,JSON 有很多结构,如下所示。

type meta struct {
    A  string  `json:"A"`
    B float64 `json:"B"`
}

type data1 struct {
    C int64 `json:"C"`
}

type JSON1 struct {
    MetaData meta `json:"meta"`
    Contents data1 `json:"data"`
}

type data2 struct {
    C int64 `json:"F"`
}

type JSON2 struct {
    MetaData meta `json:"meta"`
    Contents data2 `json:"data"`
}

所以,我需要定义所有的结构。 有什么方法可以使内容字段可变以减少 JSON"A"、"B" 定义?

提前感谢您的回复。

您可以使用map[string]interface{}

type JSON struct {
    MetaData meta                   `json:"meta"`
    Contents map[string]interface{} `json:"data"`
}

然后访问如下数据:

var d JSON
...
content, ok := d.Contents["F"] // ok is false if "F" is not present