| 123456789101112131415161718192021222324252627282930313233 |
- package duration
- import (
- "encoding/json"
- "fmt"
- "time"
- )
- type Duration int64
- func (d *Duration) MarshalJSON() ([]byte, error) {
- dr := time.Duration(*d)
- return json.Marshal(dr.String())
- }
- func (d *Duration) UnmarshalJSON(b []byte) error {
- var v interface{}
- if err := json.Unmarshal(b, &v); err != nil {
- return err
- }
- switch value := v.(type) {
- case string:
- var err error
- dr, err := time.ParseDuration(value)
- if err != nil {
- return err
- }
- *d = Duration(dr)
- return nil
- default:
- return fmt.Errorf("invalid duration: %v", v)
- }
- }
|