Golang打印地图内部由json.NewDecoder生成的地图

时间:2017-01-27 00:39:36

标签: go

我正在使用the answer here从api中获取一些json:

package main

import (
   "encoding/json"
   "fmt"
   "log"
   "net/http"
)

func main() {
   resp, err := http.Get("http://api.openweathermap.org/data/2.5/forecast?id=524901&appid=1234")
   if err != nil {
      log.Fatal(err)
   }
   var generic map[string]interface{}
   err = json.NewDecoder(resp.Body).Decode(&generic)
   if err != nil {
      log.Fatal(err)
   }
   fmt.Println(generic)
}

它正常工作,我有一个存储在generic变量中的json地图。

当我打印时:

fmt.Println(generic["city"])

我回来了:

map[id:524901 name:Moscow coord:map[lon:37.615555 lat:55.75222] country:RU population:0 sys:map[population:0]]

现在我想访问城市名称。我正在尝试以下方法:

fmt.Println(generic["city"]["name"])

我得到错误:

  

muxTest / router.go:30:无效操作:generic [“city”] [“name”](类型   interface {}不支持索引)

还尝试了generic["city"].name无效。

如何访问城市名称值?

1 个答案:

答案 0 :(得分:1)

您需要将function toggleMenu(){ var mobileNav = document.getElementById('mobile_Nav'); var mobileNav_toggle = mobileNav.getAttribute("class"); if(mobileNav_toggle == "header_navigation_mobile") { mobileNav_toggle == "header_navigation_mobile.is_open"; } else { mobileNav_toggle == "header_navigation_mobile"; } alert(mobileNav_toggle); } 的{​​{1}}投射到更有用的地方。在这种情况下,interface{}再次map[string]interface{},因为map[string]interface{}本身就是一张地图。您无法将其转换为其他内容,因为city也是地图,因此无法将城市转换为coord

https://play.golang.org/p/bGsYLnSAK4