@@ -22,7 +22,11 @@ func (dm *mapperObject) registerValue(objValue reflect.Value) error {
2222 typeName := regValue .Type ().String ()
2323 if regValue .Type ().Kind () == reflect .Struct {
2424 for i := 0 ; i < regValue .NumField (); i ++ {
25- mapFieldName := typeName + nameConnector + dm .getFieldName (regValue , i )
25+ fieldName := dm .getFieldName (regValue , i )
26+ if fieldName == IgnoreTagValue {
27+ continue
28+ }
29+ mapFieldName := typeName + nameConnector + fieldName
2630 realFieldName := regValue .Type ().Field (i ).Name
2731 dm .fieldNameMap .Store (mapFieldName , realFieldName )
2832 }
@@ -39,6 +43,12 @@ func (dm *mapperObject) getFieldName(objElem reflect.Value, index int) string {
3943 fieldName := ""
4044 field := objElem .Type ().Field (index )
4145 tag := dm .getStructTag (field )
46+
47+ // keeps the behavior in old version
48+ if tag == IgnoreTagValue && ! dm .IsEnableFieldIgnoreTag () {
49+ tag = ""
50+ }
51+
4252 if tag != "" {
4353 fieldName = tag
4454 } else {
@@ -81,6 +91,10 @@ func (dm *mapperObject) elemToStruct(fromElem, toElem reflect.Value) {
8191 for i := 0 ; i < fromElem .NumField (); i ++ {
8292 fromFieldInfo := fromElem .Field (i )
8393 fieldName := dm .getFieldName (fromElem , i )
94+ if fieldName == IgnoreTagValue {
95+ continue
96+ }
97+
8498 // check field is exists
8599 realFieldName , exists := dm .CheckExistsField (toElem , fieldName )
86100 if ! exists {
@@ -131,6 +145,9 @@ func (dm *mapperObject) elemToMap(fromElem, toElem reflect.Value) {
131145 for i := 0 ; i < fromElem .NumField (); i ++ {
132146 fromFieldInfo := fromElem .Field (i )
133147 fieldName := dm .getFieldName (fromElem , i )
148+ if fieldName == IgnoreTagValue {
149+ continue
150+ }
134151 toElem .SetMapIndex (reflect .ValueOf (fieldName ), fromFieldInfo )
135152 }
136153}
@@ -257,28 +274,21 @@ func (dm *mapperObject) getStructTag(field reflect.StructField) string {
257274 // 1.check mapperTagKey
258275 if dm .enabledMapperTag {
259276 tagValue = field .Tag .Get (mapperTagKey )
260- if dm . checkTagValidity ( tagValue ) {
277+ if tagValue != "" {
261278 return tagValue
262279 }
263280 }
264281
265282 // 2.check jsonTagKey
266283 if dm .enabledJsonTag {
267284 tagValue = field .Tag .Get (jsonTagKey )
268- if dm . checkTagValidity ( tagValue ) {
285+ if tagValue != "" {
269286 // support more tag property, as json tag omitempty 2018-07-13
270287 return strings .Split (tagValue , "," )[0 ]
271288 }
272289 }
273290
274- return ""
275- }
276-
277- func (dm * mapperObject ) checkTagValidity (tagValue string ) bool {
278- if tagValue != "" && tagValue != IgnoreTagValue {
279- return true
280- }
281- return false
291+ return tagValue
282292}
283293
284294func (dm * mapperObject ) checkIsRegister (objElem reflect.Value ) bool {
@@ -287,7 +297,7 @@ func (dm *mapperObject) checkIsRegister(objElem reflect.Value) bool {
287297 return isOk
288298}
289299
290- // convert slice interface{} to []interface{}
300+ // convertToSlice convert slice interface{} to []interface{}
291301func (dm * mapperObject ) convertToSlice (arr interface {}) []interface {} {
292302 v := reflect .ValueOf (arr )
293303 if v .Kind () == reflect .Ptr {
@@ -308,7 +318,7 @@ func (dm *mapperObject) convertToSlice(arr interface{}) []interface{} {
308318 return ret
309319}
310320
311- // CheckIsTypeWrapper check value is in type wrappers
321+ // checkIsTypeWrapper check value is in type wrappers
312322func (dm * mapperObject ) checkIsTypeWrapper (value reflect.Value ) bool {
313323 for _ , w := range dm .typeWrappers {
314324 if w .IsType (value ) {
0 commit comments