|
|
@ -41,6 +41,17 @@ const ( |
|
|
|
// HexOrDecimal64 marshals uint64 as hex or decimal.
|
|
|
|
// HexOrDecimal64 marshals uint64 as hex or decimal.
|
|
|
|
type HexOrDecimal64 uint64 |
|
|
|
type HexOrDecimal64 uint64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// UnmarshalJSON implements json.Unmarshaler.
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// It is similar to UnmarshalText, but allows parsing real decimals too, not just
|
|
|
|
|
|
|
|
// quoted decimal strings.
|
|
|
|
|
|
|
|
func (i *HexOrDecimal64) UnmarshalJSON(input []byte) error { |
|
|
|
|
|
|
|
if len(input) > 0 && input[0] == '"' { |
|
|
|
|
|
|
|
input = input[1 : len(input)-1] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return i.UnmarshalText(input) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// UnmarshalText implements encoding.TextUnmarshaler.
|
|
|
|
// UnmarshalText implements encoding.TextUnmarshaler.
|
|
|
|
func (i *HexOrDecimal64) UnmarshalText(input []byte) error { |
|
|
|
func (i *HexOrDecimal64) UnmarshalText(input []byte) error { |
|
|
|
int, ok := ParseUint64(string(input)) |
|
|
|
int, ok := ParseUint64(string(input)) |
|
|
|