title: How to serve up a JSON response using Go?
body: <p><strong>Question:</strong> Currently I'm printing out my response in the <code>func Index</code>
  like this <code>fmt.Fprintf(w, string(response))</code> <strong>however, how can I send JSON properly in the request so that it maybe consumed by a view?</strong> </p>
  
  <pre><code>package main
  
  import (
      "fmt"
      "github.com/julienschmidt/httprouter"
      "net/http"
      "log"
      "encoding/json"
  )
  
  type Payload struct {
      Stuff Data
  }
  type Data struct {
      Fruit Fruits
      Veggies Vegetables
  }
  type Fruits map[string]int
  type Vegetables map[string]int
  
  
  func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
      response, err := getJsonResponse();
      if err != nil {
          panic(err)
      }
      fmt.Fprintf(w, string(response))
  }
  
  
  func main() {
      router := httprouter.New()
      router.GET("/", Index)
      log.Fatal(http.ListenAndServe(":8080", router))
  }
  
  func getJsonResponse()([]byte, error) {
      fruits := make(map[string]int)
      fruits["Apples"] = 25
      fruits["Oranges"] = 10
  
      vegetables := make(map[string]int)
      vegetables["Carrats"] = 10
      vegetables["Beets"] = 0
  
      d := Data{fruits, vegetables}
      p := Payload{d}
  
      return json.MarshalIndent(p, "", "  ")
  }
  </code></pre>