Files
go-easy-utils/jsonUtil/parse_primitive_value.go
T
jeffery da0e416c8d Feature(v2):jsonToStruct supports interface type assignment (#41)
* Feature(v2):jsonToStruct supports interface type assignment

close #38

- `JsonToStruct` 支持基本数据类型中定义 `interface{}`
- `JsonToStruct` 支持基本数据类型中定义 `any`
- 对于 `parsePrimitiveValue` 的 `string` 类型转义兼容
- 对于 `parsePrimitiveValue` 的 `bool` 类型转义兼容
2023-05-12 18:44:30 +08:00

39 lines
896 B
Go

package jsonUtil
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
}