```go
package main
import (
"net/http"
"io/ioutil"
"encoding/json"
"fmt"
)
func main() {
addr := "http://wthrcdn.etouch.cn/weather_mini?city=上海"
resp, err := http.Get(addr)
defer resp.Body.Close()
if err != nil {
panic(err)
}
b, err := ioutil.ReadAll(resp.Body)
var v map[string]interface{}
json.Unmarshal(b, &v)
v1 := (v["data"]).(map[string]interface{})
v2 := v1["forecast"]
fmt.Println(v2)
}
```
===================到最后是一个[]interface{}=======================
[map[type:晴 date:19日星期四 high:高温 27℃ fengli:<![CDATA[<3级]]> low:低温 16℃ fengxiang:东南风] map[date:20日星期五 high:高温 27℃ fengli:<![CDATA[3-4级]]> low:低温 17℃ fengxiang:东南风 type:晴] map[type:多云 date:21日星期六 high:高温 27℃ fengli:<![CDATA[3-4级]]> low:低温 19℃ fengxiang:东南风] map[date:22日星期天 high:高温 25℃ fengli:<![CDATA[<3级]]> low:低温 15℃ fengxiang:东南风 type:小雨] map[date:23日星期一 high:高温 21℃ fengli:<![CDATA[3-4级]]> low:低温 13℃ fengxiang:西北风 type:中雨]]
==========================================================
想不到怎么处理了, 求解
通过断言为 []interface{} 类型,然后遍历,每个元素,又断言为 map
当然,这种的,也可以通过定义结构体解析或者使用 https://github.com/tidwall/gjson 包
#1
更多评论
```
type AutoGenerated struct {
Data struct {
Yesterday struct {
Date string `json:"date"`
High string `json:"high"`
Fx string `json:"fx"`
Low string `json:"low"`
Fl string `json:"fl"`
Type string `json:"type"`
} `json:"yesterday"`
City string `json:"city"`
Aqi string `json:"aqi"`
Forecast []struct {
Date string `json:"date"`
High string `json:"high"`
Fengli string `json:"fengli"`
Low string `json:"low"`
Fengxiang string `json:"fengxiang"`
Type string `json:"type"`
} `json:"forecast"`
Ganmao string `json:"ganmao"`
Wendu string `json:"wendu"`
} `json:"data"`
Status int `json:"status"`
Desc string `json:"desc"`
}
```
惊了, 写这个API的人有点厉害。。。 Fx, Fengxiang, Fl, Fengli
#3