我需要验证从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:此类型检查器不知道类型为“字符串”的
答案 0 :(得分:0)
您似乎不太可能真正想直接使用TypeChecker
。
您有一个实例和一个架构。
您可能只是想使用jsonschema.validate(instance, schema)
或validator = jsonschema.Draft7Validator(schema); validator.validate(instance)
。