我试图从具有多个ID的Facebook获取事件。我使用一个 ID,但问题是当我尝试使用多个 ID 时。我对我得到的 json 结果有问题。结果确实以"数据"开头,当它以 id 开头时,我找不到有关我的问题的帮助。在此处粘贴我的 Json 结果和 C# 代码。闷闷不乐。
Json result {
= { {
"167730163274461": {
"data": [
{
"description": "",
"end_time": "2017-05-13T23:00:00+0200",
"name": "Tjuvjakt (SE) LIVE på Babel",
"place": {
"name": "Babel Malmö",
"location": {
"city": "Malmö",
"country": "Sweden",
"latitude": 55.596131504101,
"longitude": 13.010933324378,
"street": "Spångatan 38",
"zip": "211 53"
},
"id": "167730163274461"
},
"start_time": "2017-05-13T19:30:00+0200",
"id": "1188647557883179"
},
"157257114335823": {
"data": [
{
"description": "",
"end_time": "2017-05-21T03:00:00+0200",
"name": "Morrissey / The Smiths - Unhappy Birthday Party",
"place": {
"name": "Moriska Paviljongen",
"location": {
"city": "Malmö",
"country": "Sweden",
"latitude": 55.593787653743,
"longitude": 13.013644627863,
"street": "Norra Parkgatan 2",
"zip": "21422"
},
"id": "157257114335823"
},
"start_time": "2017-05-20T23:00:00+0200",
"id": "1208509892563996"
},
}
List<FbEvents> listOfEvents;
public ActionResult Index()
{
WebClient myWebClient = new WebClient();
string downloadUrl = "https://graph.facebook.com/events?ids=167730163274461,157257114335823&access_token=**=40";
Uri downloadUri = new Uri(downloadUrl, UriKind.Absolute);
string downloadedJsonResult = null;
try
{
downloadedJsonResult = myWebClient.DownloadString(downloadUri);
}
catch (Exception ex)
{
ViewBag.ErrorMessage = ex.ToString();
return View("Error");
}
JObject jsoncreatestring = JObject.Parse(downloadedJsonResult);
JArray requiredDataArray = (JArray)jsoncreatestring["167730163274461"]["data"];
string stringToBe = requiredDataArray.ToString();
listOfEvents = JsonConvert.DeserializeObject<List<FbEvents>>(stringToBe);
return View(listOfEvents);
}
}
}
public class FbEvents
{
[JsonProperty("owner")]
public string owner { get; set; }
[JsonProperty("name")]
public string name { get; set; }
[JsonProperty("start_time")]
public string date { get; set; }
[JsonProperty("description")]
public string description { get; set; }
[JsonProperty("cover")]
public Dictionary<string, string> cover { get; set; }
[JsonProperty("id")]
public string id { get; set; }
}
我不认为这是最好的方法,但它应该像这样工作:
// [...]
JObject jsoncreatestring = JObject.Parse(downloadedJsonResult);
List<FbEvents> listOfEvents = new List<FbEvents>();
foreach (var item in jsoncreatestring)
{
JArray requiredDataArray = (JArray)item.Value["data"];
FbEvents fbEvent = JsonConvert.DeserializeObject<List<FbEvents>>(requiredDataArray.ToString())[0];
listOfEvents.Add(fbEvent);
}
return View(listOfEvents);
// [...]