I'm starting to learn Golang and I would like to know how to get a json response by calling an url, if you could give me an example it would be great in order to guide myself.
2条回答 默认 最新
- douxing8939 2014-01-03 13:24关注
I'd write a little helper function to do it:
// 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 }
A full working example can be found here: http://play.golang.org/p/b1WJb7MbQV
Note that it is important to check the status code as well as the Get error, and the response body must be closed explicitly (see the documentation here: http://golang.org/pkg/net/http/#Get)
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报