我收到“ jsonschema.exceptions.UndefinedTypeCheck:此类型检查器不知道类型为'string'的错误”

时间:2019-09-23 08:40:50

标签: python python-3.x jsonschema

我需要验证从API请求接收到的JSON模式。为此,我正在创建一些测试脚本。

    def get_request():
    r = requests.post(*some request*)
    return r

    """The schema which needs to be validated:"""

    tc = TypeChecker()
    my_json = get_request()[0]
    schema = {
        "type": "array",
        "items": {
            "id": {"type": "number"},
            'name': {"type": "string"},
            "launchAlias": {"type": "string"},
            "imsGameType": {"type": "string"},
            "liveGameType": {"type": "string"},
            "tableColor": {"type": "string"},
            "dedicated": {"type": "boolean"},
            "status": {"type": "string"},
            "language": {"type": "string"},
            "languageFlagImageUrl": {"type": "string"},
            "dynamicImageUrl": {"type": "string"},
            "asaAlternativeImage": {"type": "string"},
            "dealer": {"type": "array"},
            "dealerName": {"type": "string"},
            "dealerPictureUrl": {"type": "string"},
            "asaCompliant": {"type": "string"},
            "platforms": {"type": "array"},
            "playerCount": {"type": "array"},
        },
    }


    """Schema validation"""

    tc.is_type(instance=my_json["name"], type='string')

我希望接收输出将很简单,“退出代码为0的过程已完成” 尝试了其他实例的几种变体,例如“ type = string / str / number / integer / array等”。总是出现相同的错误

但是我总是得到:

  

回溯(最近通话最近):     文件“ C:\ Users \ vvel \ PycharmProjects \ untitled \ venv \ lib \ site-packages \ jsonschema_types.py”,第91行,在is_type中     fn = self._type_checkers [type]      getitem 中的文件“ C:\ Users \ vvel \ PycharmProjects \ untitled \ venv \ lib \ site-packages \ pyrsistent_pmap.py”,第71行       返回PMap._getitem(self._buckets,键)     文件“ C:\ Users \ vvel \ PycharmProjects \ untitled \ venv \ lib \ site-packages \ pyrsistent_pmap.py”,第68行,在_getitem中       引发KeyError(key)   KeyError:“字符串”

在处理上述异常期间,发生了另一个异常:

  

回溯(最近通话最近):     在第58行的“ C:/Users/vvel/PycharmProjects/untitled/asd.py”文件中       validate_object()     validate_object中第54行的文件“ C:/Users/vvel/PycharmProjects/untitled/asd.py”      tc.is_type(instance = my_json [“ name”],type ='string')     文件“ C:\ Users \ vvel \ PycharmProjects \ untitled \ venv \ lib \ site-packages \ jsonschema_types.py”,第93行,在is_type中       引发UndefinedTypeCheck(type)   jsonschema.exceptions.UndefinedTypeCheck:此类型检查器不知道类型为“字符串”的

1 个答案:

答案 0 :(得分:0)

您似乎不太可能真正想直接使用TypeChecker

您有一个实例和一个架构。

您可能只是想使用jsonschema.validate(instance, schema)validator = jsonschema.Draft7Validator(schema); validator.validate(instance)