增加数据类型转换
This commit is contained in:
93
filter.go
93
filter.go
@ -10,14 +10,13 @@ package filter
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"git.zhangdeman.cn/zhangdeman/wrapper"
|
||||
"strings"
|
||||
|
||||
"github.com/tidwall/gjson"
|
||||
"github.com/tidwall/sjson"
|
||||
|
||||
"errors"
|
||||
|
||||
"git.zhangdeman.cn/zhangdeman/util"
|
||||
)
|
||||
|
||||
// NewFilter 过滤器实例
|
||||
@ -182,61 +181,51 @@ func (f *filter) getValue(dataType string, sourceValue gjson.Result, defaultValu
|
||||
}
|
||||
}
|
||||
|
||||
strVal := wrapper.String(sourceValueStr)
|
||||
|
||||
switch dataType {
|
||||
case DataTypeInt8:
|
||||
return util.StringConvert.ToInt8(sourceValueStr)
|
||||
case DataTypeInt16:
|
||||
return util.StringConvert.ToInt16(sourceValueStr)
|
||||
case DataTypeInt32:
|
||||
return util.StringConvert.ToInt32(sourceValueStr)
|
||||
case DataTypeInt64:
|
||||
return util.StringConvert.ToInt64(sourceValueStr)
|
||||
case DataTypeInt:
|
||||
return util.StringConvert.ToInt(sourceValueStr)
|
||||
case DataTypeUint8:
|
||||
return util.StringConvert.ToUint8(sourceValueStr)
|
||||
case DataTypeUint16:
|
||||
return util.StringConvert.ToUint16(sourceValueStr)
|
||||
case DataTypeUint32:
|
||||
return util.StringConvert.ToUint32(sourceValueStr)
|
||||
case DataTypeUint64:
|
||||
return util.StringConvert.ToUint64(sourceValueStr)
|
||||
case DataTypeUint:
|
||||
return util.StringConvert.ToUint(sourceValueStr)
|
||||
case DataTypeBool:
|
||||
return util.StringConvert.ToBool(sourceValueStr)
|
||||
case DataTypeFloat32:
|
||||
return util.StringConvert.ToFloat32(sourceValueStr)
|
||||
case DataTypeFloat64:
|
||||
return util.StringConvert.ToFloat64(sourceValueStr)
|
||||
case DataTypeFloat:
|
||||
return util.StringConvert.ToFloat64(sourceValueStr)
|
||||
case DataTypeDouble:
|
||||
return util.StringConvert.ToDouble(sourceValueStr)
|
||||
case DataTypeNumber:
|
||||
return util.StringConvert.ToNumber(sourceValueStr)
|
||||
case DataTypeString:
|
||||
case wrapper.DataTypeInt8:
|
||||
return strVal.ToInt8()
|
||||
case wrapper.DataTypeInt16:
|
||||
return strVal.ToInt16()
|
||||
case wrapper.DataTypeInt32:
|
||||
return strVal.ToInt32()
|
||||
case wrapper.DataTypeInt64:
|
||||
return strVal.ToInt64()
|
||||
case wrapper.DataTypeInt:
|
||||
return strVal.ToInt()
|
||||
case wrapper.DataTypeUint8:
|
||||
return strVal.ToUint8()
|
||||
case wrapper.DataTypeUint16:
|
||||
return strVal.ToUint16()
|
||||
case wrapper.DataTypeUint32:
|
||||
return strVal.ToUint32()
|
||||
case wrapper.DataTypeUint64:
|
||||
return strVal.ToUint64()
|
||||
case wrapper.DataTypeUint:
|
||||
return strVal.ToUint()
|
||||
case wrapper.DataTypeBool:
|
||||
return strVal.ToBool()
|
||||
case wrapper.DataTypeFloat32:
|
||||
return strVal.ToFloat64()
|
||||
case wrapper.DataTypeFloat64:
|
||||
fallthrough
|
||||
case wrapper.DataTypeFloat:
|
||||
fallthrough
|
||||
case wrapper.DataTypeDouble:
|
||||
return strVal.ToFloat64()
|
||||
case wrapper.DataTypeNumber:
|
||||
return strVal.ToNumber()
|
||||
case wrapper.DataTypeString:
|
||||
return sourceValueStr, nil
|
||||
case DataTypeAny:
|
||||
case wrapper.DataTypeAny:
|
||||
return sourceValue.Value(), nil
|
||||
case DataTypeAnySlice:
|
||||
case wrapper.DataTypeAnySlice:
|
||||
// 任意类型的list
|
||||
var (
|
||||
result []interface{}
|
||||
)
|
||||
if err := util.JSON.UnmarshalWithNumber([]byte(sourceValueStr), &result); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
return result, nil
|
||||
case DataTypeObject:
|
||||
return strVal.ToAnySlice()
|
||||
case wrapper.DataTypeObject:
|
||||
// object
|
||||
var (
|
||||
result map[string]interface{}
|
||||
)
|
||||
if err := util.JSON.UnmarshalWithNumber([]byte(sourceValueStr), &result); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
return result, nil
|
||||
return strVal.ToObject()
|
||||
default:
|
||||
return nil, errors.New(dataType + " is not support!")
|
||||
}
|
||||
|
Reference in New Issue
Block a user