我遇到了RestSharp反序列化返回内容到我的类的问题。从我所有的搜索中,似乎我正确地做到了这一点。我宁愿使用RestSharp的反序列化器,也不愿意回退到像Newstonsoft的Json.NET这样的其他软件包。RestSharp不反序列化JSON对象列表,始终为空
什么我做的是做一个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“列表(如下图所示)。我在response2.Content接收以下JSON响应:
[
{
"webinarKey":678470607,
"subject":"Easton's 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's 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总是空。出于某种原因,反序列化失败了,我不知道为什么。我的目标是能够使用foreach循环遍历结果:
foreach(RootObject r in response2.Data)
{
lblGoToWebinar.Text += r.webinarKey.ToString() + ", ";
}
为什么反序列化失败的任何想法?
预先感谢您!
你可以调试并查看'response2'对象来查看什么是原始值?你应该看看调试器是否有错误。 – agarcian 2012-04-26 18:00:37
谢谢@agarcian!根据你的建议,我开始搜索一些内部错误,并在下面的答案中看到它。 – 2012-04-27 16:29:43
很高兴它解决了! – agarcian 2012-04-29 01:10:25