better handling for pointer in AutoMap
This commit is contained in:
parent
ce541e3422
commit
8bf777428a
9
api.go
9
api.go
@ -3,6 +3,7 @@ package structmapper
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
di "git.apihub24.de/admin/generic-di"
|
di "git.apihub24.de/admin/generic-di"
|
||||||
"git.apihub24.de/admin/structmapper/utils"
|
"git.apihub24.de/admin/structmapper/utils"
|
||||||
@ -52,10 +53,14 @@ func SliceMap[TFrom any, TTo any](from []TFrom) []TTo {
|
|||||||
|
|
||||||
func AutoMap[TFrom any, TTo any](from TFrom) (TTo, error) {
|
func AutoMap[TFrom any, TTo any](from TFrom) (TTo, error) {
|
||||||
var result TTo
|
var result TTo
|
||||||
|
resultValue := reflect.ValueOf(&result).Elem()
|
||||||
|
if resultValue.Kind() == reflect.Ptr {
|
||||||
|
resultValue.Set(reflect.New(resultValue.Type().Elem()))
|
||||||
|
}
|
||||||
str, err := json.Marshal(from)
|
str, err := json.Marshal(from)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
_ = json.Unmarshal(str, &result)
|
err = json.Unmarshal(str, resultValue.Addr().Interface())
|
||||||
return result, nil
|
return result, err
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user