Пример #1
0
        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);
        }
Пример #2
0
    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;
            }
        }
    }