feature_json_number.go 652 B

12345678910111213141516171819202122232425262728293031
  1. package jsoniter
  2. import (
  3. "encoding/json"
  4. "strconv"
  5. )
  6. type Number string
  7. // String returns the literal text of the number.
  8. func (n Number) String() string { return string(n) }
  9. // Float64 returns the number as a float64.
  10. func (n Number) Float64() (float64, error) {
  11. return strconv.ParseFloat(string(n), 64)
  12. }
  13. // Int64 returns the number as an int64.
  14. func (n Number) Int64() (int64, error) {
  15. return strconv.ParseInt(string(n), 10, 64)
  16. }
  17. func CastJsonNumber(val interface{}) (string, bool) {
  18. switch typedVal := val.(type) {
  19. case json.Number:
  20. return string(typedVal), true
  21. case Number:
  22. return string(typedVal), true
  23. }
  24. return "", false
  25. }