@@ -91,30 +91,40 @@ func (i Mapper) mapStruct(path string, reflectValue reflect.Value) (map[string]i
9191 value := reflectValue .Field (j )
9292 element := Element {name : fieldName , Value : value }
9393
94- accepted , err := i .Filter (fieldPath , element )
95- if err != nil {
96- return nil , fmt .Errorf ("Filter failed: %w" , err )
94+ if err := i .mapStructField (fieldPath , element , result ); err != nil {
95+ return nil , err
9796 }
97+ }
9898
99- if accepted {
100- renamed , err := i .Rename (fieldPath , element )
101- if err != nil {
102- return nil , fmt .Errorf ("Rename failed: %w" , err )
103- }
99+ return result , nil
100+ }
104101
105- mappedValue , err := i .MapValue (fieldPath , element )
106- if err != nil {
107- return nil , fmt .Errorf ("MapValue failed: %w" , err )
108- }
102+ func (i Mapper ) mapStructField (fieldPath string , element Element , result map [string ]interface {}) error {
103+ accepted , filterErr := i .Filter (fieldPath , element )
104+ if filterErr != nil {
105+ return fmt .Errorf ("Filter failed: %w" , filterErr )
106+ }
109107
110- result [ renamed ], err = i . mapAny ( fieldPath , mappedValue )
111- if err != nil {
112- return nil , err
113- }
108+ if accepted {
109+ renamed , renameErr := i . Rename ( fieldPath , element )
110+ if renameErr != nil {
111+ return fmt . Errorf ( "Rename failed: %w" , renameErr )
114112 }
113+
114+ mappedValue , mapErr := i .MapValue (fieldPath , element )
115+ if mapErr != nil {
116+ return fmt .Errorf ("MapValue failed: %w" , mapErr )
117+ }
118+
119+ finalValue , err := i .mapAny (fieldPath , mappedValue )
120+ if err != nil {
121+ return err
122+ }
123+
124+ result [renamed ] = finalValue
115125 }
116126
117- return result , nil
127+ return nil
118128}
119129
120130func (i Mapper ) mapSlice (path string , reflectValue reflect.Value ) (_ interface {}, err error ) {
0 commit comments