Я делаю запрос JSON к стороннему API. Если срок действия моего токена авторизации истек, я получаю {"error": "message"}
. Если все прошло успешно, я получаю правильный ответ.
Прямо сейчас я дважды вызываю json.Unmarshal
, чтобы проанализировать ответ: один раз, чтобы проверить наличие ошибки, и один раз, чтобы проанализировать реальные данные.
Есть ли способ избежать двойного звонка Unmarshal?
type Unknown map[string]interface{}
type Response struct {
Status string `json:"status"`
Strategy string `json:"strategy"`
Items []Item `json:"items"`
}
unknown := Unknown{}
json.Unmarshal(jsonData, &unknown)
if val, ok := unknown["error"]; ok {
fmt.Println(val)
return
}
response := Response{}
err := json.Unmarshal(jsonData, &response)
if err != nil {
fmt.Println("There was an error")
fmt.Println(err)
return
}