code: func (u *URI) UnmarshalJSON(b []byte) error {
  	var input struct {
  		Scheme string `json:"scheme,omitempty"`
  		Host   string `json:"host,omitempty"`
  		Port   uint16 `json:"port,omitempty"`
  	}
  	if err := json.Unmarshal(b, &input); err != nil {
  		return err
  	}
  	u.Scheme = input.Scheme
  	u.Host = input.Host
  	u.Port = input.Port
  	return nil
  }
docs: // UnmarshalJSON unmarshals a byte slice to a URI.