mirror of
https://github.com/jefferyjob/go-easy-utils.git
synced 2025-12-24 13:18:09 +08:00
39 lines
893 B
Go
39 lines
893 B
Go
package jsonx
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
)
|
|
|
|
// 原始数据类型转换支持
|
|
// 将数据转为Struct指定的类型
|
|
func parsePrimitiveValue(fieldVal reflect.Value, v any) error {
|
|
switch fieldVal.Kind() {
|
|
case reflect.String:
|
|
fieldVal.SetString(toStringReflect(v))
|
|
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
|
n, err := toInt64Reflect(v)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
fieldVal.SetInt(n)
|
|
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
|
n, err := toUint64Reflect(v)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
fieldVal.SetUint(uint64(n))
|
|
case reflect.Float32, reflect.Float64:
|
|
n, err := toFloat64Reflect(v)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
fieldVal.SetFloat(n)
|
|
case reflect.Bool:
|
|
fieldVal.SetBool(toBoolReflect(v))
|
|
default:
|
|
return fmt.Errorf("unsupported kind: %s", fieldVal.Kind())
|
|
}
|
|
return nil
|
|
}
|