Handle quoted strings in UnmarshalJSON
This commit is contained in:
parent
7860534f0c
commit
e2b42ca57b
2 changed files with 15 additions and 3 deletions
4
Gopkg.lock
generated
4
Gopkg.lock
generated
|
@ -214,8 +214,8 @@
|
||||||
".",
|
".",
|
||||||
"parse"
|
"parse"
|
||||||
]
|
]
|
||||||
revision = "963366c29a7acc2d6e02f4f9bcf260d5a1cf4968"
|
revision = "b4c2f060875361c070ed2bc300c5929b82f5fa2e"
|
||||||
version = "v1.1.1"
|
version = "v1.1.2"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
branch = "master"
|
branch = "master"
|
||||||
|
|
14
vendor/github.com/containous/flaeg/parse/parse.go
generated
vendored
14
vendor/github.com/containous/flaeg/parse/parse.go
generated
vendored
|
@ -1,6 +1,7 @@
|
||||||
package parse
|
package parse
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
@ -203,6 +204,11 @@ func (d *Duration) UnmarshalText(text []byte) error {
|
||||||
return d.Set(string(text))
|
return d.Set(string(text))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MarshalJSON serializes the given duration value.
|
||||||
|
func (d *Duration) MarshalJSON() ([]byte, error) {
|
||||||
|
return json.Marshal(time.Duration(*d))
|
||||||
|
}
|
||||||
|
|
||||||
// UnmarshalJSON deserializes the given text into a duration value.
|
// UnmarshalJSON deserializes the given text into a duration value.
|
||||||
func (d *Duration) UnmarshalJSON(text []byte) error {
|
func (d *Duration) UnmarshalJSON(text []byte) error {
|
||||||
if v, err := strconv.Atoi(string(text)); err == nil {
|
if v, err := strconv.Atoi(string(text)); err == nil {
|
||||||
|
@ -210,7 +216,13 @@ func (d *Duration) UnmarshalJSON(text []byte) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
v, err := time.ParseDuration(string(text))
|
// We use json unmarshal on value because we have the quoted version
|
||||||
|
var value string
|
||||||
|
err := json.Unmarshal(text, &value)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
v, err := time.ParseDuration(value)
|
||||||
*d = Duration(v)
|
*d = Duration(v)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue