MCPcopy Create free account
hub / github.com/devfeel/mapper / MapperMap

Method MapperMap

mapper_object.go:65–102  ·  view source on GitHub ↗

MapperMap mapper and set value from map to object support auto register struct now support field type: 1.reflect.Bool 2.reflect.String 3.reflect.Int8\16\32\64 4.reflect.Uint8\16\32\64 5.reflect.Float32\64 6.time.Time

(fromMap map[string]interface{}, toObj interface{})

Source from the content-addressed store, hash-verified

63// 5.reflect.Float32\64
64// 6.time.Time
65func (dm *mapperObject) MapperMap(fromMap map[string]interface{}, toObj interface{}) error {
66 toElemType := reflect.ValueOf(toObj)
67 toElem := toElemType
68 if toElemType.Kind() == reflect.Ptr {
69 toElem = toElemType.Elem()
70 }
71
72 if toElem == dm.ZeroValue {
73 return errors.New("to obj is not legal value")
74 }
75 // check register flag
76 // if not register, register it
77 if !dm.checkIsRegister(toElem) {
78 if err := dm.Register(toObj); err != nil {
79 return err
80 }
81 }
82 for k, v := range fromMap {
83 fieldName := k
84 // check field is exists
85 realFieldName, exists := dm.CheckExistsField(toElem, fieldName)
86 if !exists {
87 continue
88 }
89 fieldInfo, exists := toElem.Type().FieldByName(realFieldName)
90 if !exists {
91 continue
92 }
93
94 fieldKind := fieldInfo.Type.Kind()
95 fieldValue := toElem.FieldByName(realFieldName)
96
97 if err := dm.setFieldValue(fieldValue, fieldKind, v); err != nil {
98 return err
99 }
100 }
101 return nil
102}
103
104// SetEnabledTypeChecking set enabled flag for TypeChecking
105// if set true, the field type will be checked for consistency during mapping

Callers 2

MapToSliceMethod · 0.95
MapperMapSliceMethod · 0.95

Calls 4

checkIsRegisterMethod · 0.95
RegisterMethod · 0.95
CheckExistsFieldMethod · 0.95
setFieldValueMethod · 0.95

Tested by

no test coverage detected