我正在尝试使用以下格式声明json:
{"type": "mystring", "data": "mystring2"}
通过使用以下代码:
from jsonschema import validate
schema = {"type": "string", "data": "string"}
myjson = {"type": "mystring", "data": "mystring2"}
validate(myjson, schema)
我收到此错误:
jsonschema.exceptions.ValidationError: {'type': 'mystring', 'data': 'mystring2'} is not of type 'string'
Failed validating 'type' in schema:
{'data': 'string', 'type': 'string'}
On instance:
{'data': 'mystring2', 'type': 'mystring'}
似乎保留了“ type”属性以断言文档的类型。 如果我更改“ type”属性(来自架构和myjson变量)以进行任何其他操作,则它将正常工作!
是否可以使用jsonschema断言名为“ type”的属性?
答案 0 :(得分:2)
设计根对象对我有用:
from jsonschema import validate
schema = {
'type': 'object',
'properties': {
'data': { 'type': 'string' },
'type': { 'type': 'string' }
}
}
myjson = {'type': 'mystring', 'data': 'mystring2'}
validate(myjson, schema) # All good
现在让它失败:
myjson = {'type': 42, 'data': 'mystring2'}
validate(myjson, schema)
Failed validating 'type' in schema['properties']['type']:
{'type': 'string'}
On instance['type']:
42
答案 1 :(得分:1)
我制作了一个简单的版本来说明问题。您的类型设置不正确。
from jsonschema import validate
schema = {"data": {"type" : "string"}} # define your key then its type
myjson = {"data": "mystring"} # your key, and its value
validate(myjson, schema) # validate
使用您自己的数据
from jsonschema import validate
schema = { "data": {"type": "string"}}
myjson = {"type": "mystring", "data": "mystring2"}
validate(myjson, schema)
阅读文档并使用其示例始终是一个好主意。