【发布时间】: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