Browse Source

Use json.Number as the return

carlcarl 8 years ago
parent
commit
be9d4ded4f
2 changed files with 7 additions and 4 deletions
  1. 4 1
      feature_iter.go
  2. 3 3
      jsoniter_iterator_test.go

+ 4 - 1
feature_iter.go

@@ -1,8 +1,10 @@
 package jsoniter
 
 import (
+	"encoding/json"
 	"fmt"
 	"io"
+	"strconv"
 )
 
 // ValueType the type for JSON element
@@ -274,7 +276,8 @@ func (iter *Iterator) Read() interface{} {
 		return iter.ReadString()
 	case Number:
 		if iter.cfg.configBeforeFrozen.UseNumber {
-			return iter.ReadInt()
+			num := iter.ReadInt64()
+			return json.Number(strconv.FormatInt(num, 10))
 		}
 		return iter.ReadFloat64()
 	case Nil:

+ 3 - 3
jsoniter_iterator_test.go

@@ -2,6 +2,7 @@ package jsoniter
 
 import (
 	"bytes"
+	"encoding/json"
 	"fmt"
 	"strconv"
 	"testing"
@@ -45,9 +46,8 @@ func Test_iterator_use_number(t *testing.T) {
 		t.Run(fmt.Sprintf("%v", input), func(t *testing.T) {
 			should := require.New(t)
 			iter := ParseString(Config{UseNumber: true}.Froze(), input)
-			expected, err := strconv.ParseInt(input, 10, 32)
-			should.Nil(err)
-			should.Equal(int(expected), iter.Read())
+			expected := json.Number(input)
+			should.Equal(expected, iter.Read())
 		})
 	}
 }