1
0
mirror of https://github.com/json-iterator/go.git synced 2025-06-15 22:50:24 +02:00

wrap array

This commit is contained in:
Tao Wen
2017-01-28 21:11:36 +08:00
parent fa16f3c75c
commit 64c9bd0b1c
3 changed files with 244 additions and 1 deletions

View File

@ -1,6 +1,9 @@
package jsoniter
import "fmt"
import (
"fmt"
"reflect"
)
type Any interface {
LastError() error
@ -76,6 +79,41 @@ func WrapString(val string) Any {
return &stringAny{baseAny{}, nil, val}
}
func Wrap(val interface{}) Any {
type_ := reflect.TypeOf(val)
switch type_.Kind() {
case reflect.Slice:
return wrapArray(val)
case reflect.String:
return WrapString(val.(string))
case reflect.Int:
return WrapInt64(int64(val.(int)))
case reflect.Int8:
return WrapInt64(int64(val.(int8)))
case reflect.Int16:
return WrapInt64(int64(val.(int16)))
case reflect.Int32:
return WrapInt64(int64(val.(int32)))
case reflect.Int64:
return WrapInt64(val.(int64))
case reflect.Uint:
return WrapInt64(int64(val.(uint)))
case reflect.Uint8:
return WrapInt64(int64(val.(uint8)))
case reflect.Uint16:
return WrapInt64(int64(val.(uint16)))
case reflect.Uint32:
return WrapInt64(int64(val.(uint32)))
case reflect.Uint64:
return WrapInt64(int64(val.(uint64)))
case reflect.Float32:
return WrapFloat64(float64(val.(float32)))
case reflect.Float64:
return WrapFloat64(val.(float64))
}
return nil
}
func (iter *Iterator) ReadAny() Any {
return iter.readAny(nil)
}