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
我想知道是否可以为 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