diff --git a/utils/typeconv.go b/utils/typeconv.go index df233bca..123a6b9c 100644 --- a/utils/typeconv.go +++ b/utils/typeconv.go @@ -7,6 +7,7 @@ import ( "fmt" "math" "net/url" + "reflect" "strconv" "strings" "time" @@ -70,15 +71,13 @@ func TryInterface2Int64(data interface{}) (num int64, err error) { if dataNumber, ok := data.(int); ok { return int64(dataNumber), nil } - dataNumber, ok := data.(json.Number) - if !ok { - return 0, fmt.Errorf("data is not json.Number:%v to int64", data) + if dataNumber, ok := data.(json.Number); ok { + return dataNumber.Int64() } - retVal, err := dataNumber.Int64() - if err != nil { - return num, err + if str, ok := data.(string); ok { + return Str2Int64(str), nil } - return retVal, nil + return 0, fmt.Errorf("data is not json.Number, it's %s, value:%v", reflect.TypeOf(data).String(), data) } func MustInterface2Int64(data interface{}) int64 { @@ -114,15 +113,13 @@ func TryInterface2Float64(data interface{}) (num float64, err error) { if dataNumber, ok := data.(float32); ok { return float64(dataNumber), nil } - dataNumber, ok := data.(json.Number) - if !ok { - return num, fmt.Errorf("data is not json.Number:%v", data) + if dataNumber, ok := data.(json.Number); ok { + return dataNumber.Float64() } - retVal, err := dataNumber.Float64() - if err != nil { - return num, err + if str, ok := data.(string); ok { + return Str2Float64(str), nil } - return retVal, nil + return 0, fmt.Errorf("data is not json.Number, it's %s, value:%v", reflect.TypeOf(data).String(), data) } func MustInterface2Float64(data interface{}) float64 {