我正在尝试获取通过请求获取的json的值。
但是我没有得到值foo1
,我已经尝试了所有方法,但没有得到值。
出现invalid operation
错误。
你能帮我吗?
{
"result": {
"foo1": 1751,
"foo2": "2018-12-17T00:00:00-02:00",
}
}
url := "mysite"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
byt := []byte(string(body))
var dat map[string]interface{}
if err := json.Unmarshal(byt, &dat); err != nil {
panic(err)
}
fmt.Println(dat) //map[result:map[foo1:1751 foo2:2018-12-17T00:00:00-02:00]]
fmt.Println(dat["result"]) //map[foo1:1751 foo2:2018-12-17T00:00:00-02:00]]
foo1 := dat["result"]["foo1"] //invalid operation: dat["result"]["foo1"] (type interface {} does not support indexing)
fmt.Println(foo1)
答案 0 :(得分:1)
要详细说明@zerkms的评论,您需要将其断言键入map[string]interface{}
。
Go playground link
PS:在分配之前执行nil检查总是一个好主意。
if exists := dat["result"]; exists != nil {
foo1 := dat["result"].(map[string]interface{})
}