У меня возникла проблема с десериализацией возвращаемого содержимого в моих классах RestSharp. Из всех моих поисков кажется, что я делаю это правильно. Я бы предпочел использовать десериализатор RestSharp, чем возвращаться к другому пакету, например Newstonsoft Json.NET.
Что я делаю, так это сделать запрос API для GoToWebinar для всего списка запланированных веб-семинаров:
var client = new RestClient(string.Format("https://api.citrixonline.com/G2W/rest/organizers/{0}/upcomingWebinars", "300000000000239000"));
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "OAuth oauth_token=" + System.Configuration.ConfigurationManager.AppSettings["GoToWebinar"]);
var response2 = client.Execute<List<RootObject>>(request);
Как вы видите, мне бы хотелось получить список объектов "RootObject" (как показано ниже). Я получаю следующий ответ JSON в ответе2.Content:
[
{
"webinarKey":678470607,
"subject":"Easton Wild Rice Cooking Demo",
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"organizerKey":300000000000239551,
"times":[{"startTime":"2012-05-09T15:00:00Z","endTime":"2012-05-09T16:00:00Z"}],
"timeZone":"America/Denver"
},
{
"webinarKey":690772063,
"subject":"Easton Match Making Service",
"description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"organizerKey":300000000000239551,
"times":[{"startTime":"2012-05-09T15:00:00Z","endTime":"2012-05-09T16:00:00Z"}],
"timeZone":"America/Denver"
}
]
Я создал следующие объекты, используя http://json2csharp.com, используя приведенные выше результаты JSON:
public class RootObject
{
public int webinarKey { get; set; }
public string subject { get; set; }
public string description { get; set; }
public long organizerKey { get; set; }
public List<Time> times { get; set; }
public string timeZone { get; set; }
}
public class Time
{
public string startTime { get; set; }
public string endTime { get; set; }
}
Проблема - response2.Data всегда Null. По какой-то причине десериализация потерпела неудачу, и я не знаю почему. Моя цель - использовать цикл foreach для повторения результатов:
foreach(RootObject r in response2.Data)
{
lblGoToWebinar.Text += r.webinarKey.ToString() + ", ";
}
Любые идеи о том, почему десериализация не работает?
Заранее благодарю вас!