code: func (u *URI) MarshalJSON() ([]byte, error) {
  	var output struct {
  		Scheme string `json:"scheme,omitempty"`
  		Host   string `json:"host,omitempty"`
  		Port   uint16 `json:"port,omitempty"`
  	}
  	output.Scheme = u.Scheme
  	output.Host = u.Host
  	output.Port = u.Port
  
  	return json.Marshal(output)
  }
docs: // MarshalJSON marshals URI into a JSON-encoded byte slice.