diff --git a/feature_adapter.go b/feature_adapter.go index aaddfab..4e9679b 100644 --- a/feature_adapter.go +++ b/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,11 @@ 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 + return errors.New("the second param must be ptr type") + } iter.ReadVal(v) if iter.head == iter.tail { iter.loadMore() @@ -157,4 +164,4 @@ func (adapter *AdaptedEncoder) Encode(val interface{}) error { func (adapter *AdaptedEncoder) SetIndent(prefix, indent string) { // not implemented yet -} \ No newline at end of file +}