#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.