一尘不染

如何通过Go语言中的url获取JSON对象?

go

我开始学习Golang,我想知道如何通过调用url获得json响应,如果您能给我一个例子,那么对指导自己来说将是很棒的。


阅读 287

收藏
2020-07-02

共1个答案

一尘不染

我会写一些辅助函数来做到这一点:

// getJSON fetches the contents of the given URL
// and decodes it as JSON into the given result,
// which should be a pointer to the expected data.
func getJSON(url string, result interface{}) error {
    resp, err := http.Get(url)
    if err != nil {
        return fmt.Errorf("cannot fetch URL %q: %v", url, err)
    }
    defer resp.Body.Close()
    if resp.StatusCode != http.StatusOK {
        return fmt.Errorf("unexpected http GET status: %s", resp.Status)
    }
    // We could check the resulting content type
    // here if desired.
    err := json.NewDecoder(resp.Body).Decode(result)
    if err != nil {
        return fmt.Errorf("cannot decode JSON: %v", err)
    }
    return nil
}

可以在这里找到完整的工作示例:http :
//play.golang.org/p/b1WJb7MbQV

请注意,检查状态码和Get错误非常重要,并且必须明确关闭响应正文(请参见此处的文档:http
//golang.org/pkg/net/http/#Get)
2020-07-02