code: func (ns *Namespace) GetJSON(urlParts ...string) (interface{}, error) {
  	var v interface{}
  	url := strings.Join(urlParts, "")
  	cache := ns.cacheGetJSON
  
  	req, err := http.NewRequest("GET", url, nil)
  	if err != nil {
  		return nil, _errors.Wrapf(err, "Failed to create request for getJSON resource %s", url)
  	}
  
  	unmarshal := func(b []byte) (bool, error) {
  		err := json.Unmarshal(b, &v)
  		if err != nil {
  			return true, err
  		}
  		return false, nil
  	}
  
  	req.Header.Add("Accept", "application/json")
  
  	err = ns.getResource(cache, unmarshal, req)
  	if err != nil {
  		ns.deps.Log.ERROR.Printf("Failed to get JSON resource %q: %s", url, err)
  		return nil, nil
  	}
  
  	return v, nil
  }
docs: // GetJSON expects one or n-parts of a URL to a resource which can either be a local or a remote one.
  // If you provide multiple parts they will be joined together to the final URL.
  // GetJSON returns nil or parsed JSON to use in a short code.