client/http/http_client.go
func (o *Options) UnmarshalJSON(data []byte) error {
	v := &optionsJSON{}
	if err := json.Unmarshal(data, v); err != nil {
		return err
	}
	*o = Options{
		Timeout:             v.Timeout.Duration(),
		KeepAlive:           v.KeepAlive.Duration(),
		TLSHandshakeTimeout: v.TLSHandshakeTimeout.Duration(),
		TLSSkipVerify:       v.TLSSkipVerify,
		RetryTimeMax:        v.RetryTimeMax.Duration(),
		RetrySleepMax:       v.RetrySleepMax.Duration(),
		RetrySleepBase:      v.RetrySleepBase.Duration(),
	}
	return nil
}
func (o *Options) UnmarshalJSON(data []byte) error {
	v := &optionsJSON{}
	if err := json.Unmarshal(data, v); err != nil {
		return err
	}
	*o = Options{
		Timeout:             v.Timeout.Duration(),
		KeepAlive:           v.KeepAlive.Duration(),
		TLSHandshakeTimeout: v.TLSHandshakeTimeout.Duration(),
		TLSSkipVerify:       v.TLSSkipVerify,
		RetryTimeMax:        v.RetryTimeMax.Duration(),
		RetrySleepMax:       v.RetrySleepMax.Duration(),
		RetrySleepBase:      v.RetrySleepBase.Duration(),
	}
	return nil
}
// UnmarshalJSON implements json.Unamrshaler interface.
// It parses time.Duration as strings.