从 JSON 架构生成验证代码
Generating validation code from JSON schema
是否有现有的 python 包可以帮助我从 json 模式生成代码?
例如,如果我有一个 JSON 对象,例如
{
"attribute": "obj.value",
"operator": "greater than",
"value" : 235
}
我希望能够采用此 JSON 并将其作为规则应用于不同的对象,以查看哪些对象通过了规则。
所以理想情况下我想要像
这样的东西
is_valid(obj,schema)
哪里
is_valid({"value":300},{"attribute":"value","operator":"greater than","value":235})
returns 正确
jsonschema
project 正是这样做的,根据有效的 JSON 模式验证 Python 数据结构:
from jsonschema import validate
validate(obj, schema)
此 returns None
当架构有效时,并在无效时引发异常。如果您必须有一个布尔值,请使用:
import jsonschema
def is_valid(obj, schema):
try:
jsonschema.validate(obj, schema)
except jsonschema.ValidationError:
return False
else:
return True
您确实需要使用有效的 JSON 架构约束。例如,对于整数值,limit the range 如果您的值需要遵守边界。
字典 {"value": 300}
是一个具有单个键的 JSON 对象,其中该单个键是具有下边界的整数,因此将其定义为 JSON 模式:
schema = {
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 235,
"exclusiveMinimum": True
}
}
}
此架构验证您的示例值:
>>> import jsonschema
>>> def is_valid(obj, schema):
... try:
... jsonschema.validate(obj, schema)
... except jsonschema.ValidationError:
... return False
... else:
... return True
...
>>> schema = {
... "type": "object",
... "properties": {
... "value": {
... "type": "integer",
... "minimum": 235,
... "exclusiveMinimum": True
... }
... }
... }
>>> is_valid({'value': 300}, schema)
True
>>> is_valid({'value': 1}, schema)
False
阅读 Understanding JSON Schema 以获得有关如何编写此类模式的精彩教程。
是否有现有的 python 包可以帮助我从 json 模式生成代码?
例如,如果我有一个 JSON 对象,例如
{
"attribute": "obj.value",
"operator": "greater than",
"value" : 235
}
我希望能够采用此 JSON 并将其作为规则应用于不同的对象,以查看哪些对象通过了规则。
所以理想情况下我想要像
这样的东西is_valid(obj,schema)
哪里
is_valid({"value":300},{"attribute":"value","operator":"greater than","value":235})
returns 正确
jsonschema
project 正是这样做的,根据有效的 JSON 模式验证 Python 数据结构:
from jsonschema import validate
validate(obj, schema)
此 returns None
当架构有效时,并在无效时引发异常。如果您必须有一个布尔值,请使用:
import jsonschema
def is_valid(obj, schema):
try:
jsonschema.validate(obj, schema)
except jsonschema.ValidationError:
return False
else:
return True
您确实需要使用有效的 JSON 架构约束。例如,对于整数值,limit the range 如果您的值需要遵守边界。
字典 {"value": 300}
是一个具有单个键的 JSON 对象,其中该单个键是具有下边界的整数,因此将其定义为 JSON 模式:
schema = {
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 235,
"exclusiveMinimum": True
}
}
}
此架构验证您的示例值:
>>> import jsonschema
>>> def is_valid(obj, schema):
... try:
... jsonschema.validate(obj, schema)
... except jsonschema.ValidationError:
... return False
... else:
... return True
...
>>> schema = {
... "type": "object",
... "properties": {
... "value": {
... "type": "integer",
... "minimum": 235,
... "exclusiveMinimum": True
... }
... }
... }
>>> is_valid({'value': 300}, schema)
True
>>> is_valid({'value': 1}, schema)
False
阅读 Understanding JSON Schema 以获得有关如何编写此类模式的精彩教程。