Десериализация JSON из ответа RestSharp - PullRequest
0 голосов
/ 04 февраля 2020

Я получаю JSON результат с этой веб-страницы API (https://flagrantflop.com/api/endpoint.php?api_key=13b6ca7fa0e3cd29255e044b167b01d7&scope=team_stats&season=2019-2020&season_type=regular&team_name=Atlanta%20Hawks)

Используя библиотеку RestSharp, пока у меня есть это:

var client = new RestClient("https://flagrantflop.com/api/endpoint.php?api_key=13b6ca7fa0e3cd29255e044b167b01d7&scope=team_stats&season=2019-2020&season_type=regular&team_name=");

var request = new RestRequest("Atlanta Hawks", DataFormat.Json);

var response = client.Get(request);

Я проверил URL-адрес и часть запроса, в которой указывается команда и обе работы.

Я знаю, что существует ряд методов десериализации JSON, но я не уверен, что это лучший способ.

1 Ответ

0 голосов
/ 08 февраля 2020

Запрос не работает, потому что аргумент, который вы вводите в RestRequest, обрабатывается как его собственная страница, основанная на базовом URI.

Вы можете проверить это, вызвав client.BuildUri(request) с вашим текущим setup ―, вы увидите, что разрешенный URL-адрес https://flagrantflop.com/api/Atlanta Hawks , поэтому вы не получили правильный ответ JSON. Я рекомендую переписать запрос следующим образом, но есть других допустимых способов :

var client = new RestClient("https://flagrantflop.com/api/")
    .AddDefaultQueryParameter("api_key", "13b6ca7fa0e3cd29255e044b167b01d7")
    .AddDefaultQueryParameter("scope", "team_stats")
    .AddDefaultQueryParameter("season", "2019-2020")
    .AddDefaultQueryParameter("season_type", "regular");

var request = new RestRequest("endpoint.php")
    .AddQueryParameter("team_name", "Atlanta Hawks");

После этого RestSharp может автоматически десериализовать ваш ответ:

RootObject response = client.Get<RootObject>(request);

По умолчанию для десериализации вашего объекта используется Simple Json.

...