JsonConvert .DeserializeObject всегда возвращает null

#json #api #rest #model-view-controller

#json #API #rest #модель-представление-контроллер

Вопрос:

Я пытаюсь использовать футбольный API (SportMonks) в моем ASP.NET Проект MVC. Я новичок в этом, поэтому я столкнулся с проблемой отправки deserialized JSON с контроллера на просмотр. Вот код:-

Ответ JSON:

 {"data":[{"id":1,"name":"Europe"},{"id":2,"name":"Asia"},{"id":3,"name":"Africa"},{"id":4,"name":"Oceania"},{"id":5,"name":"Antarctica"},{"id":6,"name":"North America"},{"id":7,"name":"South America"}],"meta":{"subscription":{"started_at":{"date":"2017-03-20 21:02:56.000000","timezone_type":3,"timezone":"UTC"},"trial_ends_at":null,"ends_at":null},"plan":{"name":"Free Plan","price":"0.00","request_limit":"3,1"},"sports":[{"id":1,"name":"Soccer","current":true},{"id":6,"name":"Cricket","current":false}]}} 
  

Модели:-

 public class SAPI_Continent
    {
        public int id { get; set; }
        public string name { get; set; }
    }
public class SoccerAPI
    {
        public IList<SAPI_Continent> continents { get; set; }
    }
  

Contorller

   [HttpGet]
    public ActionResult ConsumeExternalAPI()
    {
        var webClient = new WebClient();
        var json = webClient.DownloadString(@"https://soccer.sportmonks.com/api/v2.0/continents?api_token=nAfVFSbRn3x7tP7b840mitMVli48deY0sVndIB6zpae8MquprEivAuH7zplu");
        SoccerAPI continents = JsonConvert.DeserializeObject<SoccerAPI>(json);
        return View(continents);
    }
  

continents всегда равно null, хотя var json возвращает данные в обычном режиме

Вид

 @if (Model != null)
{
 <ul>
    @foreach (var con in Model.continents)
    {
        <li>@con.name</li>
    }
 </ul>
 }
 else
 {
  <p>Error</p>
 }
  

Как я могу получить значения только из части `data` `id amp; name` и почему десериализованная переменная равна null?

Комментарии:

1. общедоступный «IList<SAPI_Continent> continents { get; set; }» должен быть «общедоступным IList<SAPI_Continent> data { get; set; }»

2. Сделайте это ответом, потому что это решило мою проблему 🙂 большое спасибо

Ответ №1:

Ссылаясь на ваш «нулевой» вопрос. Ваш атрибут continents следует изменить на data, поскольку это имя, возвращаемое из json.