Селективная десериализация json c # и json.net

1

Я использую 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 и выбрать, для какого типа десеризовать объект?

Спасибо за вашу помощь. :-)

Теги:
deserialization

2 ответа

0

Проблема в этом случае заключается в том, что у вас нет key-value json. Вы можете проверить положение элементов, и если это фиксированный параметр, вы можете посмотреть (например) первый параметр и сравнить его с кодом сообщения ok (вероятно, всегда одно и то же). В этом случае ResponseId равен 501, поэтому вы не должны разбирать json.

Поэтому, если первым параметром является STATUS_CODE_OK проанализируйте json иначе.

0

Если вы используете HttpClient, на полученном объекте должен быть код. Будет ли что-то вроде следующего помочь.

if(response.code != 200){
     //handle the error
}
  • 0
    Я использую HTTP-клиент, но код ответа 200, даже если они отправляют ошибки! Это очень нестандартный API.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню