英文:
Golang Changeable field
问题
我想知道是否可以为Go语言创建一个可变的结构体。以下是要翻译的内容:
这是一个问题。有不同的JSON对象。它始终包含"meta",但"data"会像下面这样变化。
{"meta":{"A":"AA", "B":"BB"}, "data":{"C":"CC"}}
{"meta":{"A":"DD", "B":"EE"}, "data":{"F":"FF"}}
在我的Go语言代码中,有很多用于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"`
}
因此,我需要定义所有这些结构体。是否有任何方法可以使"Contents"字段可变,以减少对JSON "A"、"B"的定义?
提前感谢您的回复。
英文:
I'd like to know that is possible to make a changeable struct for golang.
Here is the thing.
there are the different objects of JSON.
It contains "meta" always, but "data" will be changed like below.
{"meta":{"A":"AA, "B":"BB"}, "data":{"C":"CC"}}
{"meta":{"A":"DD, "B":"EE"}, "data":{"F":"FF"}}
In my golang code, there is so many structs for JSON like below.
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"`
}
So, I need to define all the struct.
Is there any way to make the Contents field is changeable to reduce JSON"A", "B" definitions?
Thanks for the reply in advance.
答案1
得分: 0
你可以使用map[string]interface{}
类型。
type JSON struct {
MetaData meta `json:"meta"`
Contents map[string]interface{} `json:"data"`
}
然后可以像这样访问数据:
var d JSON
...
content, ok := d.Contents["F"] // 如果"F"不存在,ok的值为false
英文:
You can use map[string]interface{}
type JSON struct {
MetaData meta `json:"meta"`
Contents map[string]interface{} `json:"data"`
}
and then access data like:
var d JSON
...
content, ok := d.Contents["F"] // ok is false if "F" is not present
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论