我想用golang解析一个api请求的结构,该api返回的结构如下:
{
"code": 200,
"message": "xxx",
"data": {
"a": 1,
"b": "c",
...
}
}
golang代码如下:
func api() interface{} {
resp, err := http.Get("xxx")
if err != nil {
//
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
//
}
result := map[string]interface{}{}
json.Unmarshal(body, &result)
return result
}
这个result按理说就是最上面描述的那个结构,但是我打印response code就必须使用如下方式:
resp := api()
result := resp.(map[string]interface{})
fmt.Println(result["code"])
可是我想遍历打印response data中的内容呢?
for k, v := range result["data"] {
fmt.Printf("k=%v, v=%v\n", k, v)
}
会报出如下错误:
cannot range over result["data"] (type interface {})
感觉golang解析json好麻烦.