feature_any_string.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package jsoniter
  2. import (
  3. "strconv"
  4. )
  5. type stringAny struct {
  6. baseAny
  7. val string
  8. }
  9. func (any *stringAny) Parse() *Iterator {
  10. return nil
  11. }
  12. func (any *stringAny) ValueType() ValueType {
  13. return String
  14. }
  15. func (any *stringAny) LastError() error {
  16. return nil
  17. }
  18. func (any *stringAny) ToBool() bool {
  19. str := any.ToString()
  20. if str == "false" {
  21. return false
  22. }
  23. for _, c := range str {
  24. switch c {
  25. case ' ', '\n', '\r', '\t':
  26. default:
  27. return true
  28. }
  29. }
  30. return false
  31. }
  32. func (any *stringAny) ToInt() int {
  33. parsed, _ := strconv.ParseInt(any.val, 10, 64)
  34. return int(parsed)
  35. }
  36. func (any *stringAny) ToInt32() int32 {
  37. parsed, _ := strconv.ParseInt(any.val, 10, 32)
  38. return int32(parsed)
  39. }
  40. func (any *stringAny) ToInt64() int64 {
  41. parsed, _ := strconv.ParseInt(any.val, 10, 64)
  42. return parsed
  43. }
  44. func (any *stringAny) ToUint() uint {
  45. parsed, _ := strconv.ParseUint(any.val, 10, 64)
  46. return uint(parsed)
  47. }
  48. func (any *stringAny) ToUint32() uint32 {
  49. parsed, _ := strconv.ParseUint(any.val, 10, 32)
  50. return uint32(parsed)
  51. }
  52. func (any *stringAny) ToUint64() uint64 {
  53. parsed, _ := strconv.ParseUint(any.val, 10, 64)
  54. return parsed
  55. }
  56. func (any *stringAny) ToFloat32() float32 {
  57. parsed, _ := strconv.ParseFloat(any.val, 32)
  58. return float32(parsed)
  59. }
  60. func (any *stringAny) ToFloat64() float64 {
  61. parsed, _ := strconv.ParseFloat(any.val, 64)
  62. return parsed
  63. }
  64. func (any *stringAny) ToString() string {
  65. return any.val
  66. }
  67. func (any *stringAny) WriteTo(stream *Stream) {
  68. stream.WriteString(any.val)
  69. }
  70. func (any *stringAny) GetInterface() interface{} {
  71. return any.val
  72. }