gpt4 book ai didi

Golang 在 json.NewDecoder 生成的 map 中打印 map

转载 作者:数据小太阳 更新时间:2023-10-29 03:14:11 25 4
gpt4 key购买 nike

我正在使用 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: invalid operation: generic["city"]["name"] (type interface {} does not support indexing)

还尝试了 generic["city"].name 但没有用。

如何访问城市名称值?

最佳答案

您需要将 map[string]interface{}interface{} 转换为更有用的东西。在本例中,map[string]interface{} 再次出现,因为 city 本身就是一个 map 。您无法将其转换为其他任何内容,因为 coord 也是 map ,因此无法将 city 转换为 map[string]string

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

关于Golang 在 json.NewDecoder 生成的 map 中打印 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41885456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com