func dealResp()

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
}