go - 如何将嵌套接口转换为地图切片的地图?
问题描述
我有一个 map 数组的 map map[string][]map[string]string
,只是,当我获取数据时,它是 format map[interface{}]map[interface{}][]map[interface{}]interface{}
,所以我要做一堆嵌套类型断言,这真的很笨重,需要很长时间才能编写,很难读/写,并且可能容易出错,像这样;
if key == "identities" {
idErrMessage := "Sorry, there was a problem with an identity"
idArray, ok := setting.(map[string]interface{})
if ok {
for idType, ids := range idArray {
idGroupArray, ok := ids.([]interface{})
if ok {
for _, idGroup := range idGroupArray {
id, ok := idGroup.(map[interface{}]interface{})
if ok {
log.Println("type:", idType)
for key, val := range id {
log.Printf("%v: %v", key, val)
}
} else {
log.Fatal(idErrMessage)
}
}
} else {
log.Fatal(idErrMessage)
}
}
} else {
log.Fatal(idErrMessage)
}
}
我已经搜索了几个小时,似乎找不到比上面的代码更简单的方法。
无论如何我可以v, ok := setting.(map[string]map[string][]map[string]string)
,还是我只是坚持上面的代码?
解决方案
您可以使用预期的结构定义一个结构,并尝试使用以下内容对其进行解组:
https://github.com/mitchellh/mapstructure
我从来没有用 map[interface{}]interface{} 尝试过。
推荐阅读
- flutter - 无法提取对封闭类方法的引用。代码:-32011。提取小部件表单时出现颤振错误
- ruby-on-rails - AWS CodeDeploy 不支持 ruby v3.0.1
- flutter - Flutter () => Null 的 null 安全性不是子类型 '(() => Map
)?的“否则” - jquery - 使用jquery从url获取参数
- python-3.x - 文件通过自定义 wix 安装程序被阻止,但不是通过 Windows 中的 python 安装程序
- angular - formControlName 和输入名称
- wordpress - WP_Query 不适用于 tax_query 和 woocommerce 产品属性
- subdomain - 子域处理问题。想要取消索引除一个子域之外的所有其他子域
- flutter - 当 NetworkImage 或 FileImage 可以重新定义时,结果变量的类型是什么?
- python - 如何根据每个区间的特定条件将数据标记为异常