我读了很多类似的问题,但还没有找到正确的解决方案。希望有人能给我更好的主意。
我的错误响应可能是以下格式之一:
var errProxy = `{"errors":{"id": "1", "message": "failed to resolve the ip", "status": "failed"}}`
var errServer = `{"errors": "failed to ping the dns server."}`
我试图通过使用两个结构来解决这个问题,并尝试一个接一个地解组,直到 err 为 nil 并返回:
// ErrorServer and ErrorProxy is my two struct to represent my above two error response.
type ErrorServer struct {
Error string `json:"errors"`
}
type ErrorResponse struct {
ID string `json:"id"`
Message string `json:"message"`
Status string `json:"status"`
}
type ErrorProxy struct {
ErrorResponse
}
这是我用来解析它的函数:
func parseErrorResponse(body io.ReadCloser) (string, error) {
var errServer ErrorServer
var errProxy ErrorProxy
err := json.NewDecoder(body).Decode(&errServer)
if err != nil {
err = json.NewDecoder(body).Decode(&errProxy)
if err != nil {
return "", err
}
return errProxy.Error, nil
}
return errServer.Errors, nil
}
宝慕林4294392
倚天杖
森林海
慕盖茨4494581
随时随地看视频慕课网APP
相关分类