How to get JSON object by calling a url in Go Language?

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.


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:

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:

Here's a simple example to get you started. Instead of a map[string]interface{} you should consider making a struct to hold the result of your request.

package main

import (

func main() {
   resp, err := http.Get("")
   if err != nil {
   var generic map[string]interface{}
   err = json.NewDecoder(resp.Body).Decode(&generic)
   if err != nil {

Need Your Help

The use of tolower and storing in an array

c arrays for-loop trace tolower

I am trying to trace through this problem and can not figure out how the star is goes through the while loop and is stored in the array. Is * stored as 8 because of tolower? If anyone could please ...

Embedded C++11 code — do I need volatile?

c++ c++11 arm embedded stm32

Embedded device with Cortex M3 MCU(STM32F1). It has embedded flash(64K).