如何在Go中从HTTP GET请求获取JSON响应
大家好!我刚开始学习Go,遇到了一个几个小时都没解决的问题。我需要向一个返回JSON的外部API发送GET请求,并将该响应解析为struct。
以下是我尝试过的代码:
```go
package main
import (
"fmt"
"net/http"
)
func main() {
resp, err := http.Get("https://api.example.com/data")
if err != nil {
fmt.Println("Error:", err)
}
defer resp.Body.Close()
fmt.Println(resp) // 接下来怎么办?
}
```
问题在于`resp`不是JSON本身,而是一个Response对象。我不知道如何从中提取数据到struct。我尝试阅读文档,但里面有很多关于`io.Reader`和`json.Decoder`的内容,让我感到困惑。
具体问题:
1. 如何正确读取响应体?
2. 如何将JSON转换为Go的struct?
3. 是否需要处理响应状态码?
4. 如果API返回的不是JSON,如何处理错误?
非常感谢提供详细的示例和解释。