public WeatherViewModel JsonDeserialize(string city)// Метод получения объекта json и десериализации его в модель WeatherViewModel { WeatherForecast.Forecast Forecast = new WeatherForecast.Forecast(); WeatherCurrent.Current Current = new WeatherCurrent.Current(); string apiKey = "";// Ключ доступа к http://api.openweathermap.org try { /* Создаем запрос к Weather Open Api, используя название города cityName и коюч доступа apiKey для получения прогноза погоды на 5 дней*/ HttpWebRequest apiRequest = WebRequest.Create("http://api.openweathermap.org/data/2.5/forecast?q=" + city + "&appid=" + apiKey + "&units=metric") as HttpWebRequest; string apiResponseForecast = ""; using (HttpWebResponse response = apiRequest.GetResponse() as HttpWebResponse)// Получаем ответ от сервера и считываем его в поток StreamReader до конца { StreamReader reader = new StreamReader(response.GetResponseStream()); apiResponseForecast = reader.ReadToEnd(); } Forecast = JsonConvert.DeserializeObject <WeatherForecast.Forecast>(apiResponseForecast);// Десериализуем полученый ответ в формате json в объект WeatherOpenApi.CityList } catch (WebException ex)// Если получаем любой другой тип исключения, то присваиваем объекту WeatherOpenApi.CityList значение null { Forecast = null; } try { /* Создаем запрос к Weather Open Api, используя название города cityName и ключ доступа apiKey для получения текущей погоды*/ HttpWebRequest apiCurrent = WebRequest.Create("http://api.openweathermap.org/data/2.5/weather?q=" + city + "&appid=" + apiKey + "&units=metric") as HttpWebRequest;// Создаем запрос к Weather Open Api, используя название города cityName и коюч доступа apiKey string apiResponseCurrent = ""; using (HttpWebResponse response = apiCurrent.GetResponse() as HttpWebResponse)// Получаем ответ от сервера и считываем его в поток StreamReader до конца { StreamReader reader = new StreamReader(response.GetResponseStream()); apiResponseCurrent = reader.ReadToEnd(); } Current = JsonConvert.DeserializeObject <WeatherCurrent.Current>(apiResponseCurrent);// Десериализуем полученый ответ в формате json в объект WeatherOpenApi.CityList } catch (WebException ex)// Если получаем любой другой тип исключения, то присваиваем объекту WeatherOpenApi.CityList значение null { Current = null; } WeatherViewModel weather = new WeatherViewModel(); weather.weatherForecast = Forecast; weather.weatherCurrent = Current; return(weather); }
private string FormatResults(WeatherCurrent.Current data, string location, WeatherForecast.Daily forecastData = null) { var sb = new StringBuilder() .AppendFormat(">>> **{0}:** {1} {2}", location, data.Weather.Value.ToTitleCase(), WeatherIcon(data.Weather.Icon)) .AppendLine() .AppendFormat("**Temp:** {0}°{1} **Feels Like:** {2}°{3} **Humidity:** {4}{5}", data.Temperature.Value, data.Temperature.Unit.ToUpper()[0], data.Feels_like.Value, data.Feels_like.Unit.ToUpper()[0], data.Humidity.Value, data.Humidity.Unit) .AppendLine() .AppendFormat("**Wind:** {0} **Speed:** {1}{2} {3}", data.Wind.Speed.Name.ToTitleCase(), data.Wind.Speed.Value, data.Wind.Speed.Unit, data.Wind.Direction.Code); if (!string.IsNullOrEmpty(data.Wind.Gusts)) { sb.AppendFormat(" **Gusts:** {0}{1}", data.Wind.Gusts, data.Wind.Speed.Unit); } if (forecastData != null) { sb.AppendLine() .AppendFormat("**High:** {0}°{1} **Low:** {2}°{3}", forecastData.Temp.Max.ToString(), data.Temperature.Unit.ToUpper()[0], forecastData.Temp.Min.ToString(), data.Temperature.Unit.ToUpper()[0]) .AppendLine() .AppendFormat("**Forecast:** {0} {1}", forecastData.Weather[0].Description.ToTitleCase(), WeatherIcon(forecastData.Weather[0].Icon)); } return(sb.ToString().Trim()); }