def parse(cls, querydict):
        for key in querydict.keys():
            if not any((key in JSONAPIQueryDict._fields,
                        cls.RE_FIELDS.match(key))):
                msg = "Query parameter {} is not known".format(key)
                raise ValueError(msg)
        result = JSONAPIQueryDict(
            distinct=cls.prepare_values(querydict.getlist('distinct')),
            fields=cls.parse_fields(querydict),
            filter=querydict.getlist('filter'),
            include=cls.prepare_values(querydict.getlist('include')),
            page=int(querydict.get('page')) if querydict.get('page') else None,
            sort=cls.prepare_values(querydict.getlist('sort'))
        )
        return result