protected override object DeserializeCore(JObject json, Type objectType, ExploreVenuesLoadContext context) { try { var nv = new ExploreVenues(context); var keywords = json["keywords"]; var kwl = new List <Keyword>(); if (keywords != null) { var items = keywords["items"]; if (items != null) { foreach (var item in items) { string displayName = Json.TryGetJsonProperty(item, "displayName"); string value = Json.TryGetJsonProperty(item, "keyword"); var keyword = new Keyword(context.Section, displayName, value); // special hard-coding for now if (context.SectionDisplayName != null) { keyword.SectionDisplayName = context.SectionDisplayName; } kwl.Add(keyword); } } } nv.RelatedKeywords = kwl; var groups = json["groups"]; var grps = new List <RecommendedCompactVenueList>(); bool isMemoryLimited = FourSquare.Instance.IsLowMemoryDevice; if (groups != null) { foreach (var group in groups) { string groupType = Json.TryGetJsonProperty(group, "type"); string groupName = Json.TryGetJsonProperty(group, "name"); var thisGroup = new RecommendedCompactVenueList { Name = groupName, Type = groupType, }; var itms = group["items"]; if (itms != null) { int itemCount = 0; foreach (var item in itms) { // LIMITED MEMORY EXPERIENCE: ONLY 3 items. ++itemCount; if (isMemoryLimited && itemCount == 4) { break; } if (item != null) { var recommendation = RecommendedCompactVenue.ParseJson(item); if (recommendation != null) { thisGroup.Add(recommendation); } } } } grps.Add(thisGroup); } } nv.Groups = grps; nv.IsLoadComplete = true; return(nv); } catch (Exception e) { throw new UserIntendedException( "We couldn't explore right now, please try again later.", e); } }
public static RecommendedCompactVenue ParseJson(JToken jsonRecommendation) { var recommendation = new RecommendedCompactVenue(); var reasons = jsonRecommendation["reasons"]; var reasonList = new List <RecommendationReason>(); if (reasons != null) { var items = reasons["items"]; if (items != null) { foreach (var item in items) { string sType = Json.TryGetJsonProperty(item, "type"); string sMessage = Json.TryGetJsonProperty(item, "message"); reasonList.Add(new RecommendationReason { Reason = sType, Message = sMessage, }); } if (reasonList.Count > 0) { recommendation.PrimaryReason = reasonList[0]; if (reasonList.Count > 1) { List <RecommendationReason> otherReasons = new List <RecommendationReason>(); for (int i = 1; i < reasonList.Count; i++) { otherReasons.Add(reasonList[i]); } recommendation.SecondaryReasons = otherReasons; } } } } recommendation.Reasons = reasonList; var venue = jsonRecommendation["venue"]; if (venue != null) { recommendation.Venue = CompactVenue.ParseJson(venue); } var todos = jsonRecommendation["tips"]; var tips = new List <Tip>(); if (todos != null) { foreach (var todo in todos) { tips.Add(Tip.ParseJson(todo)); } if (tips.Count > 0) { recommendation.PrimaryTip = tips[0]; } } recommendation.Tips = tips; return(recommendation); }
public static RecommendedCompactVenue ParseJson(JToken jsonRecommendation) { var recommendation = new RecommendedCompactVenue(); var reasons = jsonRecommendation["reasons"]; var reasonList = new List<RecommendationReason>(); if (reasons != null) { var items = reasons["items"]; if (items != null) { foreach (var item in items) { string sType = Json.TryGetJsonProperty(item, "type"); string sMessage = Json.TryGetJsonProperty(item, "message"); reasonList.Add(new RecommendationReason { Reason = sType, Message = sMessage, }); } if (reasonList.Count > 0) { recommendation.PrimaryReason = reasonList[0]; if (reasonList.Count > 1) { List<RecommendationReason> otherReasons = new List<RecommendationReason>(); for (int i = 1; i < reasonList.Count; i++) { otherReasons.Add(reasonList[i]); } recommendation.SecondaryReasons = otherReasons; } } } } recommendation.Reasons = reasonList; var venue = jsonRecommendation["venue"]; if (venue != null) { recommendation.Venue = CompactVenue.ParseJson(venue); } var todos = jsonRecommendation["tips"]; var tips = new List<Tip>(); if (todos != null) { foreach (var todo in todos) { tips.Add(Tip.ParseJson(todo)); } if (tips.Count > 0) { recommendation.PrimaryTip = tips[0]; } } recommendation.Tips = tips; return recommendation; }