我是golang的新手。我想得到我的回复作为多个结果。我做了一些方法,但我需要改变那个impartErrl := ph.profileService.ValidateSchema(gojsonschema.NewStringLoader(string(b))) if impartErrl != nil { ctx.JSON(http.StatusBadRequest, impart.ErrorResponse(impartErrl)) return }func (ps *profileService) ValidateSchema(document gojsonschema.JSONLoader) (errors []impart.Error) { result, err := gojsonschema.Validate(ps.schemaValidator, document) if err != nil { ps.SugaredLogger.Error(err.Error()) return impart.ErrorResponse( impart.NewError(impart.ErrBadRequest, "unable to validate schema"), ) } if result.Valid() { return nil } // msg := fmt.Sprintf("%v validations errors.\n", len(result.Errors())) msg := "validations errors" for i, desc := range result.Errors() { msg += fmt.Sprintf("%v: %s\n", i, desc) er := impart.NewError(impart.ErrValidationError, fmt.Sprintf("%s ", desc), impart.ErrorKey(desc.Field())) errors = append(errors, er) } return errors}func NewError(err error, msg string, args ...interface{}) Error { key := GetErrorKey(args...) return impartError{ err: err, msg: msg, key: key, }}func ErrorResponse(err interface{}) []Error { var errorResponse []Error switch err.(type) { case Error: errorResponse = []Error{err.(Error)} case []Error: errorResponse = err.([]Error) default: errorResponse = []Error{ NewError(ErrUnknown, fmt.Sprintf("%v", err)), } } return errorResponse}type Error interface { error HttpStatus() int ToJson() string Err() error Msg() string}我怎样才能得到这些类型的回应。?因为在ios应用程序中,在解析响应[]时显示错误。所以我需要改变输出。
1 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
函数应返回 a 而不是 。例如:ErrorResponsemap[int]Error[]Error
func ErrorResponse(err interface{}) map[int]Error {
errorResponse := map[int]Error{}
switch e := err.(type) {
case Error:
errorResponse[0] = e
case []Error:
for i, k := range e {
errorResponse[i] = k
}
default:
errorResponse[0] = NewError(ErrUnknown, fmt.Sprintf("%v", err))
}
return errorResponse
}
- 1 回答
- 0 关注
- 102 浏览
添加回答
举报
0/150
提交
取消