in pkg/common/util/response.go [81:120]
func mapIItoMapSI(in any) any {
var inMap map[any]any
if v, ok := in.(map[any]any); !ok {
return in
} else {
inMap = v
}
outMap := make(map[string]any, len(inMap))
for k, v := range inMap {
if v == nil {
continue
}
s := fmt.Sprint(k)
if s == "class" {
// ignore the "class" field
continue
}
vt := reflect.TypeOf(v)
switch vt.Kind() {
case reflect.Map:
if _, ok := v.(map[any]any); ok {
v = mapIItoMapSI(v)
}
case reflect.Slice:
vl := reflect.ValueOf(v)
os := make([]any, 0, vl.Len())
for i := 0; i < vl.Len(); i++ {
if vl.Index(i).CanInterface() {
osv := mapIItoMapSI(vl.Index(i).Interface())
os = append(os, osv)
}
}
v = os
}
outMap[s] = v
}
return outMap
}