Compare commits

..

1 Commits

Author SHA1 Message Date
peze 21389214ea fix the toMap when input is basic map 2025-04-07 17:23:36 +08:00
2 changed files with 28 additions and 5 deletions
+11 -4
View File
@@ -729,10 +729,17 @@ func ToMap(args ...interface{}) map[string]interface{} {
}
default:
val := reflect.ValueOf(obj)
res := structToMap(val)
for key, value := range res {
if value != nil {
finalArg[key] = value
if val.Kind().String() == "map" {
tmp := val.MapKeys()
for _, key := range tmp {
finalArg[key.String()] = val.MapIndex(key).Interface()
}
} else {
res := structToMap(val)
for key, value := range res {
if value != nil {
finalArg[key] = value
}
}
}
}
+17 -1
View File
@@ -361,11 +361,27 @@ type Test struct {
}
func TestToMap(t *testing.T) {
inStr := map[string]string{
"tea": "test",
"test": "test2",
}
result := ToMap(inStr)
utils.AssertEqual(t, "test", result["tea"])
utils.AssertEqual(t, "test2", result["test"])
inInt := map[string]int{
"tea": 12,
"test": 13,
}
result = ToMap(inInt)
utils.AssertEqual(t, 12, result["tea"])
utils.AssertEqual(t, 13, result["test"])
in := map[string]*string{
"tea": String("test"),
"nil": nil,
}
result := ToMap(in)
result = ToMap(in)
utils.AssertEqual(t, "test", result["tea"])
utils.AssertNil(t, result["nil"])