Avatar ·

如何在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,如何处理错误? 非常感谢提供详细的示例和解释。