code: def parse_JSON(self, JSON_string):
          
          if JSON_string is None:
              raise parse_response_error.ParseResponseError('JSON data is None')
          d = json.loads(JSON_string)
          try:
              alert_id = d['_id']
              t = d['last_update'].split('.')[0].replace('T', ' ') + '+00'
              alert_last_update = timeformatutils._ISO8601_to_UNIXtime(t)
              alert_trigger_id = d['triggerId']
              alert_met_conds = [
                  dict(current_value=c['current_value']['min'], condition=Condition.from_dict(c['condition']))
                      for c in d['conditions']
              ]
              alert_coords = d['coordinates']
              return Alert(alert_id, alert_trigger_id, alert_met_conds, alert_coords, last_update=alert_last_update)
  
          except ValueError as e:
              raise parse_response_error.ParseResponseError('Impossible to parse JSON: %s' % e)
          except KeyError as e:
              raise parse_response_error.ParseResponseError('Impossible to parse JSON: %s' % e)
docs: Parses a `pyowm.alertapi30.alert.Alert` instance out of raw JSON data.
  
          :param JSON_string: a raw JSON string
          :type JSON_string: str
          :return: a `pyowm.alertapi30.alert.Alert` instance or ``None``
              if no data is available
          :raises: *ParseResponseError* if it is impossible to find or parse the
              data needed to build the result