def METHOD_NAME(self):
    request_content = self.request.body
    if self.request.headers.get("Content-Encoding") == "gzip":
        # handle gzip self.request bodies
        try:
            request_content = util.decode_gzip(self.request.body)
        except GZIPDecodeError as exc:
            raise self.prepare_exception(ParseError({"decode": repr(exc)}))
    try:
        content = request_content.decode(self.request.charset)
    except UnicodeDecodeError as exc:
        # Use str(), since repr() includes the full source bytes
        raise self.prepare_exception(ParseError({"decode": str(exc)}))
    request_data = {}
    if content:
        try:
            request_data = json.loads(content)
        except ValueError as exc:
            raise self.prepare_exception(ParseError({"decode": repr(exc)}))
    validated_data = {}
    errors = None
    try:
        validated_data = self.schema.deserialize(request_data)
    except colander.Invalid as exc:
        errors = {"validation": exc.asdict()}
    if request_content and errors:
        raise self.prepare_exception(ParseError(errors))
    return validated_data