【问题标题】:I recieve 'jsonschema.exceptions.UndefinedTypeCheck: Type 'string' is unknown to this type checker' error我收到 'jsonschema.exceptions.Undefined Type Check: Type 'string' is unknown to this type checker' 错误
【发布时间】:2020-01-23 07:11:48
【问题描述】:

我需要验证从 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 等”。总是报同样的错误

但我总是得到:

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

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次): 文件“C:/Users/vvel/PycharmProjects/untitled/asd.py”,第 58 行,在 验证对象() 文件“C:/Users/vvel/PycharmProjects/untitled/asd.py”,第 54 行,在 validate_object 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:此类型检查器未知类型“字符串”

【问题讨论】:

    标签: python python-3.x jsonschema


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      • 2022-12-02
      • 2022-09-22
      • 2021-10-22
      • 2023-02-25
      • 2019-07-01
      • 2022-12-01
      相关资源
      最近更新 更多