Я использую API, который возвращает ответ JSON. Проблема, с которой сталкивается, заключается в том, как они возвращают свои сообщения об ошибках: они возвращаются
["501","Invalid apikey"]
вместо обычного json-ответа, который сериализуется:
public class AvailableItemResponse : IResponse
{
public AvailableItemResponse ()
{
AvailableItems = new List<AvailableItem>();
}
public int ResponseId { get; set; }
public string SearchId { get; set; }
public int TotalFound { get; set; }
public List<AvailableItem> AvailableItems { get; set; }
}
Как я могу проверить формат json и выбрать, для какого типа десеризовать объект?
Спасибо за вашу помощь. :-)
Проблема в этом случае заключается в том, что у вас нет key-value
json. Вы можете проверить положение элементов, и если это фиксированный параметр, вы можете посмотреть (например) первый параметр и сравнить его с кодом сообщения ok
(вероятно, всегда одно и то же). В этом случае ResponseId
равен 501, поэтому вы не должны разбирать json.
Поэтому, если первым параметром является STATUS_CODE_OK
проанализируйте json иначе.
Если вы используете HttpClient, на полученном объекте должен быть код. Будет ли что-то вроде следующего помочь.
if(response.code != 200){
//handle the error
}