[英]Golang interface conversion error when trying to iterate through map of json array
当我尝试遍历一些json映射时遇到问题。
原始JSON数据如下所示:
"dataArray": [
{
"name": "default",
"url": "/some/url"
},
{
"name": "second",
"url": "/another/url"
}
]
该地图如下所示:
[map[name:default url:/some/url] map[name:second url:/another/url]]
代码如下:
for _, urlItem := range item.(map[string]interface{}){
do some stuff
}
当它是JSON对象时,这通常可以正常工作,但这是JSON中的数组,并且出现以下错误:
panic:接口转换:interface {}是[] interface {},而不是map [string] interface {}
任何帮助将不胜感激
错误是:
panic:接口转换:interface {}是[] interface {},而不是map [string] interface {}
在您的代码中,您正在将item
转换为map[string]interface{}
:
for _, urlItem := range item.(map[string]interface{}){
do some stuff
}
但是实际的item
是[]interface {}
:将您的隐蔽类型更改为此。
因为如您所见,结果数据为:
[map[name:default url:/some/url] map[name:second url:/another/url]]
它是一个具有map
的array
。 没有map
。
首先,您可以将数据转换为[]interface{}
,然后获取该索引并将其转换为map[string]interface{}
。 因此,示例如下所示:
data := item.([]interface{})
for _,value := range data{
yourMap := value.(map[string]interface{})
//name value
name := yourMap["name"].(string) // and so on
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.