<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_json_body(self, required=None, validators=None):
 """Get JSON from the request body :param required: optionally provide a list of keys that should be in the JSON body (raises a 400 HTTPError if any are missing) :param validator: optionally provide a dictionary of items that should be in the body with a method that validates the item. The method must be synchronous and return a boolean, no exceptions. :raises: HTTPError """

        content_type = self.request.headers.get('Content-Type',
                                                'application/json')
        if 'application/json' not in content_type.split(';'):
            raise HTTPError(415, 'Content-Type should be application/json')
        if not self.request.body:
            error = 'Request body is empty'
            logging.warning(error)
            raise HTTPError(400, error)

        try:
            body = json.loads(self.request.body)
        except (ValueError, TypeError):
            error = 'Error parsing JSON'
            logging.warning(error)
            raise HTTPError(400, error)

        if required:
            _check_required(body, required)

        if validators:
            _validate(body, validators)

        return body