common/math: allow HexOrDecimal to accept unquoted decimals too (#26758)
This commit is contained in:
parent
4034c675be
commit
f86f048646
@ -49,6 +49,17 @@ func NewHexOrDecimal256(x int64) *HexOrDecimal256 {
|
|||||||
return &h
|
return &h
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnmarshalJSON implements json.Unmarshaler.
|
||||||
|
//
|
||||||
|
// It is similar to UnmarshalText, but allows parsing real decimals too, not just
|
||||||
|
// quoted decimal strings.
|
||||||
|
func (i *HexOrDecimal256) 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 *HexOrDecimal256) UnmarshalText(input []byte) error {
|
func (i *HexOrDecimal256) UnmarshalText(input []byte) error {
|
||||||
bigint, ok := ParseBig256(string(input))
|
bigint, ok := ParseBig256(string(input))
|
||||||
|
@ -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))
|
||||||
|
Loading…
Reference in New Issue
Block a user