Explorar el Código

unmarshal failed return non-pointer error

chendonghai hace 8 años
padre
commit
0f5379494a
Se han modificado 1 ficheros con 10 adiciones y 2 borrados
  1. 10 2
      feature_adapter.go

+ 10 - 2
feature_adapter.go

@@ -1,8 +1,10 @@
 package jsoniter
 
 import (
-	"io"
 	"bytes"
+	"errors"
+	"io"
+	"reflect"
 )
 
 // Unmarshal adapts to json/encoding Unmarshal API
@@ -12,6 +14,12 @@ import (
 func Unmarshal(data []byte, v interface{}) error {
 	data = data[:lastNotSpacePos(data)]
 	iter := ParseBytes(data)
+	typ := reflect.TypeOf(v)
+	if typ.Kind() != reflect.Ptr {
+		// return non-pointer error
+		err = errors.New("the second param must be ptr type")
+		return
+	}
 	iter.ReadVal(v)
 	if iter.head == iter.tail {
 		iter.loadMore()
@@ -157,4 +165,4 @@ func (adapter *AdaptedEncoder) Encode(val interface{}) error {
 
 func (adapter *AdaptedEncoder) SetIndent(prefix, indent string) {
 	// not implemented yet
-}
+}