我从Facebook图表搜索请求中得到以下Json格式字符串:
{
"data": [
{
"name": "Event A",
"start_time": "2013-11-08T19:00:00+0200",
"end_time": "2013-11-10T00:00:00+0200",
"timezone": "Europe/Bucharest",
"id": "232252355126"
},
{
"name": "Event B",
"start_time": "2013-11-08T13:00:00+0200",
"end_time": "2013-11-09T16:00:00+0200",
"timezone": "Europe/Bucharest",
"location": "Bucharest",
"id": "414334343426"
},
{
"name": "Event C",
"start_time": "2013-10-30T18:30:00+0200",
"timezone": "Europe/Bucharest",
"location": "Bucharest",
"id": "44315995273"
}
],
"paging": {
"previous": "https://graph.facebook.com/search?limit=3&type=event&q=Bucharest&since=1383930000&__paging_token=22251255126",
"next": "https://graph.facebook.com/search?limit=3&type=event&q=Bucharest&until=1383150600&__paging_token=44115995273"
}
}
我在尝试从此JSON检索数据时遇到了一些错误。我试过
dynamic jsonData = await facebookClient.GetTaskAsync(string.Format("https://graph.facebook.com/search?q={0}&type=event&limit={1}&offset={2}", locationKeyword, limit, offset));
dynamic result = JsonConvert.DeserializeObject(jsonData.ToString());
有些答案指示我使用JavaScriptSerializer
,但我没有该类的命名空间,因为我正在使用API来开发Windows 8应用程序。
我无法管理如何以某种方式从data
对象获取事件。
我尝试访问VS中的即时窗口中的值result.data
,但它无效。
我搜索如何制作这个,但大多数答案似乎都说要创建一个json数据适合的类。
我无法用dynamic
实现这一目标吗? (类似于result.data.name,result.paging.previous等)
答案 0 :(得分:0)
之前我做过这件事,除了我转换成XML,我的例子:
(1 - JavaScript) var finalStr = JSON.stringify(facebookString)
(2 - ASP.NET) JsonConvert.DeserializeXmlNode("{\"root\":" + received_json + "}","root");
答案 1 :(得分:0)
我终于设法访问了成员......
例如,要访问name
或start_time
,我执行了以下操作:
dynamic jsonData = await facebookClient.GetTaskAsync(string.Format("https://graph.facebook.com/search?q={0}&type=event&limit={1}&offset={2}", locationKeyword, limit, offset));
var result = JObject.Parse(jsonData.ToString());
var array = new JArray(result["data"]);
var a = array[0];
string name = (string) a.SelectToken("name");
var date = (DateTime?) a.SelectToken("start_time");
可能有更好的实现,但这个在我的情况下工作。我发布了它,以防其他人看到这篇文章可能会有所帮助。
祝福。