use serde::{Serialize,Deserialize};
#[derive(Serialize, Deserialize, Default)]
pub struct WeatherData {
#[serde(skip_serializing_if = "Option::is_none")]
pub winddir: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub windspeedmph: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub windgustmph: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub maxdailygust: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub windgustdir: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub windspdmph_avg2m: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub winddir_avg2m: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub windspdmph_avg10m: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub winddir_avg10m: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub humidity: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
pub humidityin: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tempf: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tempinf: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hourlyrainin: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dailyrainin: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hour24rainin: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub weeklyrainin: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub monthlyrainin: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub yearlyrainin: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eventrainin: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub totalrainin: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub baromrelin: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub baromabsin: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub uv: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
pub solarradiation: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub co2: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pm25: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pm25_24h: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pm25_in: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pm25_in_24h: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lightning_day: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lightning_hour: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lightning_time: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lightning_distance: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tz: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dateutc: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lastRain: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dewPoint: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub feelsLike: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub feelsLikein: Option<f32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dewPointin: Option<f32>,
}