This commit is contained in:
aozhiwei 2024-08-06 22:29:14 +08:00
parent 2351ba1052
commit dd033a2521

View File

@ -167,7 +167,7 @@ func UnmarshalModelList[T any](ds *DataSet, models *[]*T) error {
} }
/* /*
目前不支持指针!!! 只支持1级指针
*/ */
func UnmarshalModel[T any](ds *DataSet, m *T) error { func UnmarshalModel[T any](ds *DataSet, m *T) error {
mType := reflect.TypeOf(m).Elem() mType := reflect.TypeOf(m).Elem()
@ -202,39 +202,22 @@ func UnmarshalModel[T any](ds *DataSet, m *T) error {
if gormIsJson { if gormIsJson {
q5.DecodeJson(fieldVal, mVal.Field(i).Addr().Interface()) q5.DecodeJson(fieldVal, mVal.Field(i).Addr().Interface())
} else { } else {
switch field.Type.Kind() { if (q5.IsSimpleReflectKind(field.Type.Kind())) {
case reflect.Bool: mVal.Field(i).Set(*q5.StrToSimpleReflectValue(fieldVal, field.Type.Kind()))
{
if fieldVal == "" || fieldVal == "0" {
mVal.Field(i).SetBool(false)
} else { } else {
mVal.Field(i).SetBool(true) switch field.Type.Kind() {
} case reflect.Ptr:
}
case reflect.Int,
reflect.Int8,
reflect.Int16,
reflect.Int32,
reflect.Int64:
{ {
mVal.Field(i).SetInt(q5.ToInt64(fieldVal)) if (q5.IsSimpleReflectKind(field.Type.Elem().Kind())) {
mVal.Field(i).Set(*q5.StrToSimplePtrReflectValue(fieldVal, field.Type.Elem().Kind()))
} else {
GetSysLog().Info("UnmarshalModel unknow fieldPtrType:%s", field.Type.Elem());
} }
case reflect.Uint,
reflect.Uint8,
reflect.Uint16,
reflect.Uint32,
reflect.Uint64:
{
mVal.Field(i).SetUint(uint64(q5.ToInt64(fieldVal)))
} }
case reflect.Float32, default:
reflect.Float64:
{ {
mVal.Field(i).SetFloat(q5.ToFloat64(fieldVal)) GetSysLog().Info("UnmarshalModel unknow fieldType:%s", field.Type.Kind());
} }
case reflect.String:
{
mVal.Field(i).SetString(fieldVal)
} }
} }
} }