diff --git a/filter/filter_impl/generic_filter.go b/filter/filter_impl/generic_filter.go
index f5a03ba37941bd0f27c9e72c59fa62e26174f6f4..7d7a54fd1c48e2e4272e3541474f6449c3912ece 100644
--- a/filter/filter_impl/generic_filter.go
+++ b/filter/filter_impl/generic_filter.go
@@ -95,13 +95,15 @@ func struct2MapAll(obj interface{}) interface{} {
 		for i := 0; i < t.NumField(); i++ {
 			switch v.Field(i).Kind() {
 			case reflect.Struct:
-				if v.Field(i).Type().String() == "time.Time" {
-					setInMap(result, t.Field(i), v.Field(i).Interface())
-					break
-				}
 				fallthrough
-			case reflect.Slice | reflect.Map:
+			case reflect.Slice:
+				fallthrough
+			case reflect.Map:
 				if v.Field(i).CanInterface() {
+					if v.Field(i).Type().String() == "time.Time" {
+						setInMap(result, t.Field(i), v.Field(i).Interface())
+						break
+					}
 					setInMap(result, t.Field(i), struct2MapAll(v.Field(i).Interface()))
 				}
 				break