簡體   English   中英

嘗試遍歷json數組的映射時出現Golang接口轉換錯誤

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

它是一個具有maparray 沒有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM