package config import ( "encoding/json" "time" ) func (d *Duration) UnmarshalJSON(b []byte) error { var s string if err := json.Unmarshal(b, &s); err == nil { v, parseErr := time.ParseDuration(s) if parseErr != nil { return parseErr } *d = Duration(v) return nil } var n int64 if err := json.Unmarshal(b, &n); err != nil { return err } *d = Duration(time.Duration(n)) return nil } func (d Duration) MarshalJSON() ([]byte, error) { return json.Marshal(time.Duration(d).String()) } type Duration time.Duration