[英]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.