public static List <WeatherDaily> GetWeatherDaily(JObject response) { var error = GetServerErrorFromResponse(response); if (!String.IsNullOrEmpty(error)) { return(new List <WeatherDaily>()); } var weatherDailies = new List <WeatherDaily>(); var responseItems = JArray.Parse(response["list"].ToString()); foreach (var item in responseItems) { var weatherDaily = new WeatherDaily(); if (response["city"] != null) { weatherDaily.City = Encoding.UTF8.GetString(Encoding.Default.GetBytes(Convert.ToString(response["city"]["name"]))); weatherDaily.Country = Encoding.UTF8.GetString(Encoding.Default.GetBytes(Convert.ToString(response["city"]["country"]))); weatherDaily.CityId = Convert.ToInt32(response["city"]["id"]); } if (item["weather"] != null) { weatherDaily.Title = Encoding.UTF8.GetString(Encoding.Default.GetBytes(Convert.ToString(item["weather"][0]["main"]))); weatherDaily.Description = Encoding.UTF8.GetString(Encoding.Default.GetBytes(Convert.ToString(item["weather"][0]["description"]))); weatherDaily.Icon = Encoding.UTF8.GetString(Encoding.Default.GetBytes(Convert.ToString(item["weather"][0]["icon"]))); } if (item["temp"] != null) { weatherDaily.Temp = Convert.ToDouble(item["temp"]["day"]); weatherDaily.TempMax = Convert.ToDouble(item["temp"]["max"]); weatherDaily.TempMin = Convert.ToDouble(item["temp"]["min"]); weatherDaily.TempMorning = Convert.ToDouble(item["temp"]["morn"]); weatherDaily.TempEvening = Convert.ToDouble(item["temp"]["eve"]); weatherDaily.TempNight = Convert.ToDouble(item["temp"]["night"]); } weatherDaily.Humidity = Convert.ToDouble(item["humidity"]); weatherDaily.WindSpeed = Convert.ToDouble(item["speed"]); weatherDaily.Clouds = Convert.ToDouble(item["clouds"]); weatherDaily.Pressure = Convert.ToDouble(item["pressure"]); weatherDaily.Rain = Convert.ToDouble(item["rain"]); weatherDaily.DateUnixFormat = Convert.ToInt32(item["dt"]); weatherDaily.Date = TimeHelper.ToDateTime(Convert.ToInt32(item["dt"])); weatherDailies.Add(weatherDaily); } return(weatherDailies); }
public static void LoadAndParseJSONIntoObjects() { if (string.IsNullOrEmpty(JSONRawData)) { using (WebClient webClient = new WebClient()) { JSONRawData = webClient.DownloadString(JSONURL); } } JObject json = JObject.Parse(JSONRawData); List <JToken> data = json.Children().ToList(); foreach (JProperty baseItem in data) { switch (baseItem.Name) { case "lat": weather.Latitude = (double)baseItem.Value; break; case "lon": weather.Longitude = (double)baseItem.Value; break; case "timezone": weather.TimeZone = (string)baseItem.Value; break; case "current": List <JToken> currentItems = baseItem.Children().Children().ToList(); foreach (JProperty item in currentItems) { switch (item.Name) { case "sunrise": weather.Sunrise = (long)item.Value; break; case "sunset": weather.Sunset = (long)item.Value; break; case "temp": weather.Temp = (double)item.Value; break; case "feels_like": weather.Feels_Like = (double)item.Value; break; case "uvi": weather.UVI = (double)item.Value; break; case "visibility": weather.Visibility = (int)item.Value; break; default: ParseSharedValues(weather, item); break; } } break; case "hourly": List <JToken> hourlyItems = baseItem.Children().Children().ToList(); foreach (JToken item in hourlyItems) { WeatherHourly weatherHourlyItem = new WeatherHourly(); foreach (JProperty detail in item) { switch (detail.Name) { case "temp": weatherHourlyItem.Temp = (double)detail.Value; break; case "feels_like": weatherHourlyItem.Feels_Like = (double)detail.Value; break; default: ParseSharedValues(weatherHourlyItem, detail); break; } } weatherHourlyItems.Add(weatherHourlyItem); } break; case "daily": List <JToken> dailyItems = baseItem.Children().Children().ToList(); foreach (JToken item in dailyItems) { WeatherDaily weatherDailyItem = new WeatherDaily(); foreach (JProperty detail in item) { switch (detail.Name) { case "sunrise": weatherDailyItem.Sunrise = (long)detail.Value; break; case "sunset": weatherDailyItem.Sunset = (long)detail.Value; break; case "rain": weatherDailyItem.Rain = (double)detail.Value; break; case "uvi": weatherDailyItem.UVI = (double)detail.Value; break; case "temp": List <JToken> temps = detail.Children().Children().ToList(); foreach (JProperty temp in temps) { switch (temp.Name) { case "day": weatherDailyItem.Temp_Day = (double)temp.Value; break; case "min": weatherDailyItem.Temp_Day_Min = (double)temp.Value; break; case "max": weatherDailyItem.Temp_Day_Max = (double)temp.Value; break; case "night": weatherDailyItem.Temp_Night = (double)temp.Value; break; case "eve": weatherDailyItem.Temp_Eve = (double)temp.Value; break; case "morn": weatherDailyItem.Temp_Morn = (double)temp.Value; break; } } break; case "feels_like": List <JToken> feels = detail.Children().Children().ToList(); foreach (JProperty feel in feels) { switch (feel.Name) { case "day": weatherDailyItem.Feels_Like_Day = (double)feel.Value; break; case "night": weatherDailyItem.Feels_Like_Night = (double)feel.Value; break; case "eve": weatherDailyItem.Feels_Like_Eve = (double)feel.Value; break; case "morn": weatherDailyItem.Feels_Like_Morn = (double)feel.Value; break; } } break; default: ParseSharedValues(weatherDailyItem, detail); break; } } weatherDailyItems.Add(weatherDailyItem); } break; } } }