增加数据类型转换

This commit is contained in:
2023-05-05 15:03:49 +08:00
parent b8c7725c08
commit 3487a87104
4 changed files with 46 additions and 96 deletions

View File

@ -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!")
}