Я пытаюсь получить данные из API для назначения, но я застрял на этом пути. Я довольно неопытен в C# и раньше действительно использовал только Java и PHP, но я бы сказал, что мой опыт работы с обоими также довольно ограничен (простой CRUD mysqli через PHP веб-формы и игра с Java logi c, сделал несколько небольших игр и т. д. c.), поэтому я, вероятно, не совсем понимаю, что я делаю неправильно или в чем проблема.
По какой-то причине JSON не десериализовано в приведенном ниже коде.
Console.WriteLine(driversCollection.Drivers.Count);
всегда возвращает ноль при попытке его подсчитать. Он действительно правильно загружает JSON, исходя из того, что я мог сказать после того, как установил точку останова в visual studio и увидел, что локальное значение JSON было обновлено. Я считаю, что JSON сам по себе неправильно отформатирован и пытался удалить обратную косую черту с помощью Replace, что также не работает.
Это ссылка на JSON: https://ergast.com/api/f1/drivers.json?callback=myParser
Заранее прошу прощения за мой неподходящий код и за то, что, вероятно, является простым решением, хотя я бы Буду очень признателен за любую помощь, которую я могу получить в этом.
Drivers.cs
public class Drivers
{
string driverID;
int permanentNumber;
string code;
string url;
string givenName;
string familyName;
string dateOfBirth;
string nationality;
public string DriverID { get => driverID; set => driverID = value; }
public int PermanentNumber { get => permanentNumber; set => permanentNumber = value; }
public string Code { get => code; set => code = value; }
public string Url { get => url; set => url = value; }
public string GivenName { get => givenName; set => givenName = value; }
public string FamilyName { get => familyName; set => familyName = value; }
public string DateOfBirth { get => dateOfBirth; set => dateOfBirth = value; }
public string Nationality { get => nationality; set => nationality = value; }
}
DriversCollection.cs
public class DriversCollection
{
private List<Drivers> drivers;
public List<Drivers> Drivers { get => drivers; set => drivers = value; }
}
ReadJSON.aspx.cs
public partial class ReadJSON : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
using (var webClient = new WebClient())
{
String rawJSON = webClient.DownloadString("http://ergast.com/api/f1/2019/drivers.json?callback=myParser&limit=1000");
String editedJSON = rawJSON.Remove(rawJSON.Length - 1, 1);
editedJSON = editedJSON.Remove(0, 9);
editedJSON = editedJSON.Replace(@"\/", "/");
editedJSON = editedJSON.Replace(@"\", string.Empty);
DriversCollection driversCollection = JsonConvert.DeserializeObject<DriversCollection>(editedJSON);
Console.WriteLine(driversCollection.Drivers.Count);
}
}
}