获取 OpenWeatherMap JSON 数据进行查看

Get OpenWeatherMap JSON data to view

我正在尝试使用 OpenWeatherMap 为 MVC 构建的网站提供天气信息。 型号如下:

{
    public class OpenWeatherMap
    {
        public List<Data> list;
    }

    public class Data
    {
        public Main main { get; set; }
        public List<Weather> weather { get; set; }
        public Clouds clouds { get; set; }
        public Wind wind { get; set; }
        public Rain rain { get; set; }
        public string dt_txt { get; set; }
    }

    public class Main
    {
        public double temp { get; set; }
        public double temp_min { get; set; }
        public double temp_max { get; set; }
        public double pressure { get; set; }
        public double sea_level { get; set; }
        public double grnd_level { get; set; }
        public int humidity { get; set; }
        public double temp_kf { get; set; }
    }

    public class Weather
    {
        public int id { get; set; }
        public string main { get; set; }
        public string description { get; set; }
        public string icon { get; set; }
    }

    public class Clouds
    {
        public int all { get; set; }
    }

    public class Wind
    {
        public double speed { get; set; }
        public double deg { get; set; }
    }   
    public class Rain
    { 
        public double rain { get; set; }                  
    }

    public class Sys
    {
        public string pod { get; set; }

    }
}

控制器如下:

    public OpenWeatherMap GetLocalWeather()
    {

        string apiUrl = BaseURL + "id=" + CityID + "&appid=" + AppID + "&units=metric";

        string result = RequestHandler.Process(apiUrl);

        OpenWeatherMap lWeather = new JavaScriptSerializer().Deserialize<OpenWeatherMap>(result);


        return lWeather;
    }

    public ActionResult Index()
    {
        OpenWeatherMap localWeather = GetLocalWeather();

      return View();
     }

我有两个问题:

  1. 继续将数据传递给视图的最佳方法是什么,并且注意到 JSON 数据有时会省略项目,例如今天的降雨数据消失了。
  2. 报道此类事件的最佳方法是什么?

这将解决您的问题。

public class Weather { 
    private double _rain; 
    public double Rain { 
        get { if     (_rain != null) return _rain; else return 0.0; } 
        set { _rain = value; } } 
}