docs: def from_json(cls, data):
          """ Create STAT from json dictionary.
  
              Args:
                  data: {
                  'location': {} , // ladybug location schema
                  'ashrae_climate_zone': str,
                  'koppen_climate_zone': str,
                  'extreme_cold_week': {}, // ladybug analysis period schema
                  'extreme_hot_week': {}, // ladybug analysis period schema
                  'typical_weeks': {}, // dict of ladybug analysis period schemas
                  'heating_dict': {}, // dict containing heating design conditions
                  'cooling_dict': {}, // dict containing cooling design conditions
                  "monthly_db_50": [],  // list of 12 float values for each month
                  "monthly_wb_50": [],  // list of 12 float values for each month
                  "monthly_db_range_50": [],  // list of 12 float values for each month
                  "monthly_wb_range_50": [],  // list of 12 float values for each month
                  "monthly_db_100": [],  // list of 12 float values for each month
                  "monthly_wb_100": [],  // list of 12 float values for each month
                  "monthly_db_20": [],  // list of 12 float values for each month
                  "monthly_wb_20": [],  // list of 12 float values for each month
                  "monthly_db_04": [],  // list of 12 float values for each month
                  "monthly_wb_04": [],  // list of 12 float values for each month
                  "monthly_wind": [],  // list of 12 float values for each month
                  "monthly_wind_dirs": [], // matrix with 12 cols for months of the year
                      and 8 rows for the cardinal directions.
                  "standard_pressure_at_elev": float, // float value for pressure in Pa
                  "monthly_tau_beam":[], // list of 12 float values for each month
                  "monthly_tau_diffuse": [] // list of 12 float values for each month
              }
          """
          # Initialize the class with all data missing
          stat_ob = cls(None)
  
          # Check required and optional keys
          option_keys_none = ('ashrae_climate_zone', 'koppen_climate_zone',
                              'extreme_cold_week', 'extreme_hot_week',
                              'standard_pressure_at_elev')
          option_keys_list = ('monthly_db_50', 'monthly_wb_50',
                              'monthly_db_range_50', 'monthly_wb_range_50',
                              'monthly_db_100', 'monthly_wb_100', 'monthly_db_20',
                              'monthly_wb_20', 'monthly_db_04', 'monthly_wb_04',
                              'monthly_wind', 'monthly_wind_dirs',
                              'monthly_tau_beam', 'monthly_tau_diffuse')
          option_keys_dict = ('typical_weeks', 'heating_dict', 'cooling_dict')
          assert 'location' in data, 'Required key "location" is missing!'
          for key in option_keys_none:
              if key not in data:
                  data[key] = None
          for key in option_keys_list:
              if key not in data:
                  data[key] = []
          for key in option_keys_dict:
              if key not in data:
                  data[key] = {}
  
          # assign the properties of the dictionary to the stat object.
          stat_ob._location = Location.from_json(data['location'])
          stat_ob._ashrae_climate_zone = data['ashrae_climate_zone']
          stat_ob._koppen_climate_zone = data['koppen_climate_zone']
          stat_ob._extreme_cold_week = AnalysisPeriod.from_json(data['extreme_cold_week'])\
              if data['extreme_cold_week'] else None
          stat_ob._extreme_hot_week = AnalysisPeriod.from_json(data['extreme_hot_week'])\
              if data['extreme_hot_week'] else None
          stat_ob._typical_weeks = {}
          for key, val in data['typical_weeks'].items():
              if isinstance(val, list):
                  stat_ob._typical_weeks[key] = [AnalysisPeriod.from_json(v) for v in val]
              else:
                  stat_ob._typical_weeks[key] = AnalysisPeriod.from_json(val)
          stat_ob._winter_des_day_dict = data['heating_dict']
          stat_ob._summer_des_day_dict = data['cooling_dict']
          stat_ob._monthly_db_50 = data['monthly_db_50']
          stat_ob._monthly_wb_50 = data['monthly_wb_50']
          stat_ob._monthly_db_range_50 = data['monthly_db_range_50']
          stat_ob._monthly_wb_range_50 = data['monthly_wb_range_50']
          stat_ob._monthly_db_100 = data['monthly_db_100']
          stat_ob._monthly_wb_100 = data['monthly_wb_100']
          stat_ob._monthly_db_20 = data['monthly_db_20']
          stat_ob._monthly_wb_20 = data['monthly_wb_20']
          stat_ob._monthly_db_04 = data['monthly_db_04']
          stat_ob._monthly_wb_04 = data['monthly_wb_04']
          stat_ob._monthly_wind = data['monthly_wind']
          stat_ob._monthly_wind_dirs = data['monthly_wind_dirs']
          stat_ob._stand_press_at_elev = data['standard_pressure_at_elev']
          stat_ob._monthly_tau_beam = data['monthly_tau_beam']
          stat_ob._monthly_tau_diffuse = data['monthly_tau_diffuse']
  
          return stat_ob