func (d *DateValue) UnmarshalJSON(b []byte) error {
	if string(b) == "null" {
		return nil
	}
	var jsonDate jsonDateValue
	if err := json.Unmarshal(b, &jsonDate); err != nil {
		return err
	}
	*d = DateValue{Value: time.Time(jsonDate.Value)}
	return nil
}
UnmarshalJSON deserializes a DateValue from JSON.
package climacell
import (
	"encoding/json"
	"net/url"
	"strconv"
	"strings"
	"time"
)
type BaseResponseType struct {
	LatLon
	LocationId LocationID `json:"location_id"`
	ObservationTime DateValue `json:"observation_time"`
}
type WeatherType struct {
	Temp *FloatValue `json:"temp,omitempty"`
	FeelsLike *FloatValue `json:"feels_like,omitempty"`
	DewPoint *FloatValue `json:"dewpoint,omitempty"`
	Humidity *FloatValue `json:"humidity,omitempty"`
	WindSpeed *FloatValue `json:"wind_speed,omitempty"`
	WindDirection *FloatValue `json:"wind_direction,omitempty"`
	WindGust *FloatValue `json:"wind_gust,omitempty"`
	BaroPressure *FloatValue `json:"baro_pressure,omitempty"`
	Precipitation *FloatValue `json:"precipitation,omitempty"`
	PrecipitationType *StringValue `json:"precipitation_type,omitempty"`
	PrecipitationProbability *FloatValue `json:"precipitation_probability,omitempty"`
	Sunrise *TimeValue `json:"sunrise"`
	Sunset *TimeValue `json:"sunset"`
	Visibility *FloatValue `json:"visibility,omitempty"`
	CloudCover *FloatValue `json:"cloud_cover"`
	CloudBase *FloatValue `json:"cloud_base"`
	CloudCeiling *FloatValue `json:"cloud_ceiling"`
	SurfaceShortwaveRadiation *FloatValue `json:"surface_shortwave_radiation"`
	MoonPhase *StringValue `json:"moon_phase"`
	WeatherCode *StringValue `json:"weather_code"`
}
type AirQualityType struct {
	PMTwoPointFive *FloatValue `json:"pm25"`
	PMTen *FloatValue `json:"pm10"`
	O3 *FloatValue `json:"o3"`
	NO2 *FloatValue `json:"no2"`
	CO *FloatValue `json:"co"`
	SO2 *FloatValue `json:"so2"`
	EpaAQI *IntValue `json:"epa_aqi"`
	EPAPrimaryPollutant *StringValue `json:"epa_primary_pollutant"`
	EPAHealthConcern *StringValue `json:"epa_health_concern"`
	ChinaAQI *IntValue `json:"china_aqi"`
	ChinaPrimaryPollutant *StringValue `json:"china_primary_pollutant"`
	ChinaHealthConcern *StringValue `json:"china_health_concern"`
}
type FireIndexType struct {
	FireIndex *FloatValue `json:"fire_index"`
}
type RoadRiskType struct {
	RoadRisk *StringValue `json:"road_risk"`
	RoadRiskScore *StringValue `json:"road_risk_score"`
	RoadRiskConfidence *IntValue `json:"road_risk_confidence"`
	RoadRiskConditions *StringValue `json:"road_risk_conditions"`
}
type NowCastForecast struct {
	BaseResponseType
	WeatherType
	AirQualityType
	RoadRiskType
	FireIndexType
}
type HourlyForecast struct {
	BaseResponseType
	WeatherType
	AirQualityType
	RoadRiskType
	FireIndexType
}
type RealTime struct {
	BaseResponseType
	WeatherType
	AirQualityType
	RoadRiskType
	FireIndexType
}
type HistoricalClimaCell struct {
	BaseResponseType
	WeatherType
	AirQualityType
	RoadRiskType
	FireIndexType
}
type HistoricalStation struct {
	BaseResponseType
	WeatherType
}
type StringValue struct {
	Value *string `json:"value"`
}
func (s *StringValue) GetValue() (val string, ok bool) {
	if s == nil || s.Value == nil {
		return "", false
	}
	return *s.Value, true
}
type FloatValue struct {
	Value *float64 `json:"value"`
	Units string `json:"units,omitempty"`
}
func (f *FloatValue) GetValue() (val float64, ok bool) {
	if f == nil || f.Value == nil {
		return 0.0, false
	}
	return *f.Value, true
}
type IntValue struct {
	Value *int `json:"value"`
	Units string `json:"units,omitempty"`
}
func (i *IntValue) GetValue() (val int, ok bool) {
	if i == nil || i.Value == nil {
		return 0, false
	}
	return *i.Value, true
}
type TimeValue struct {
	Value *time.Time `json:"value"`
	Units string `json:"units,omitempty"`
}
func (t *TimeValue) GetValue() (val time.Time, ok bool) {
	if t == nil || t.Value == nil {
		return time.Time{}, false
	}
	return *t.Value, true
}
type DateValue struct{ Value time.Time }