|
|
@@ -2,9 +2,11 @@ package jsoniter
|
|
|
|
|
|
import (
|
|
|
"bytes"
|
|
|
- "errors"
|
|
|
"io"
|
|
|
"reflect"
|
|
|
+ "errors"
|
|
|
+ "unsafe"
|
|
|
+ "encoding/json"
|
|
|
)
|
|
|
|
|
|
// Unmarshal adapts to json/encoding Unmarshal API
|
|
|
@@ -147,6 +149,16 @@ func (adapter *AdaptedDecoder) Buffered() io.Reader {
|
|
|
return bytes.NewReader(remaining)
|
|
|
}
|
|
|
|
|
|
+func (decoder *AdaptedDecoder) UseNumber() {
|
|
|
+ RegisterTypeDecoder("interface {}", func(ptr unsafe.Pointer, iter *Iterator) {
|
|
|
+ if iter.WhatIsNext() == Number {
|
|
|
+ *((*interface{})(ptr)) = json.Number(iter.readNumberAsString())
|
|
|
+ } else {
|
|
|
+ *((*interface{})(ptr)) = iter.Read()
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
func NewEncoder(writer io.Writer) *AdaptedEncoder {
|
|
|
stream := NewStream(writer, 512)
|
|
|
return &AdaptedEncoder{stream}
|