31 lines
652 B
Go
31 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
|
|
}
|