32 lines
652 B
Go
32 lines
652 B
Go
|
package jsoniter
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"strconv"
|
||
|
)
|
||
|
|
||
|
type Number string
|
||
|
|
||
|
// String returns the literal text of the number.
|
||
|
func (n Number) String() string { return string(n) }
|
||
|
|
||
|
// Float64 returns the number as a float64.
|
||
|
func (n Number) Float64() (float64, error) {
|
||
|
return strconv.ParseFloat(string(n), 64)
|
||
|
}
|
||
|
|
||
|
// Int64 returns the number as an int64.
|
||
|
func (n Number) Int64() (int64, error) {
|
||
|
return strconv.ParseInt(string(n), 10, 64)
|
||
|
}
|
||
|
|
||
|
func CastJsonNumber(val interface{}) (string, bool) {
|
||
|
switch typedVal := val.(type) {
|
||
|
case json.Number:
|
||
|
return string(typedVal), true
|
||
|
case Number:
|
||
|
return string(typedVal), true
|
||
|
}
|
||
|
return "", false
|
||
|
}
|