golang 中单个数组中的多响应

我是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应用程序中,在解析响应[]时显示错误。所以我需要改变输出。


斯蒂芬大帝
浏览 103回答 1
1回答

呼啦一阵风

函数应返回 a 而不是 。例如:ErrorResponsemap[int]Error[]Errorfunc 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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go