in pkg/common/util/response.go [37:79]
func dealResp(in any, HumpToLine bool) (any, error) {
if in == nil {
return in, nil
}
switch reflect.TypeOf(in).Kind() {
case reflect.Map:
if _, ok := in.(map[any]any); ok {
m := mapIItoMapSI(in)
if HumpToLine {
m = humpToLine(m)
}
return m, nil
} else if inm, ok := in.(map[string]any); ok {
if HumpToLine {
m := humpToLine(in)
return m, nil
}
return inm, nil
}
case reflect.Slice:
if data, ok := in.([]byte); ok {
// raw bytes data should return directly
return data, nil
}
value := reflect.ValueOf(in)
newTemps := make([]any, 0, value.Len())
for i := 0; i < value.Len(); i++ {
if value.Index(i).CanInterface() {
newTemp, e := dealResp(value.Index(i).Interface(), HumpToLine)
if e != nil {
return nil, e
}
newTemps = append(newTemps, newTemp)
} else {
return nil, fmt.Errorf("unexpect err,value:%v", value)
}
}
return newTemps, nil
default:
return in, nil
}
return in, nil
}