我有一个嵌套的Map,如下所示
[map[datas:map[a:1 aaaa:1 blue:1 bb:1 green:1 cc:1 dd:1 red:1 ee:4 ff:2 gg:1]]]
如何将其表示为类型?
type datas map[string][]map[string]int
我的最终目标是这样转换这个结构体
type DataStruct struct {
Datas []struct {
Name string `json:"name"`
Num int `json:"num"`
} `json:"datass"`
}
现在我已经声明了它是type DatasType map[string]interface{}
类型,但是它抱怨我不能覆盖它(interface{}类型的变量)。
1条答案
按热度按时间6tqwzwtp1#
我真的不清楚你想做什么,但我从你的问题中推断出了以下结论:
1.数据位于片/数组中
1.此数据可表示为结构
这意味着我们可以安全地创建以下类型:
现在,假设您正在尝试整理(反整理)如下所示的数据:
您可以简单地执行以下操作:
应该够了。考虑到你的类型,还有你提到的
map[string][]map[string]int
之类的东西(或map[string][]map[string]interface{}
),我看不出有什么理由要使用map。看一下DataSet
类型,它表示一个对象,它的字段是对象的数组/切片,这似乎正是您所拥有的,所以这就是你所需要的。只有当您不知道要处理的数据是什么格式和/或类型时,才需要对
map[string]any
之类的繁琐操作感到厌烦。此外,如果您不知道要处理的数据是什么格式和/或类型,那么您必须问:你能合理地期望你做什么有价值的事情?另外值得注意的是:如果输入JSON对象包含结构/类型不包含的字段,
json.Unmarshal
将忽略这些字段,因此,如果输入如下所示:上面的
DataSet
对象仍然可以正常工作。json.Unmarshal
只要求Map到JSON输入的字段是兼容类型。