Json 架构最小验证器但用于字符串
Json Schema minimum validator but for string
使用:
from jsonschema import validate
import jsonschema
我正在尝试使用 json 模式验证字符串的最小值 4096 且没有上限。我看到正则表达式模式匹配可能是一个选项,但不确定如何在没有上限的情况下执行此操作。
json_data = {"value": "4096"}
# what i would like to do
json_schema = {"type": "string", "minimum": 4096}
try:
validate(json_data, schema=json_schema)
return True
except jsonschema.ValidationError:
return False
非常感谢任何意见。如果需要其他信息,请发表评论。谢谢。
首先,您应该输入 int
而不是 string
。
然后你检查整个 json 对象的架构,value
是 key/property:
from jsonschema import validate
import jsonschema
json_data = {"value": 4096}
json_schema = {
"type": "object",
"properties": {
"value": {
"type": "number",
"minimum": 4096
}
}
}
try:
validate(json_data, schema=json_schema)
print(True)
except jsonschema.ValidationError:
print(False)
使用值 < 4096 和 >= 4096 尝试上面的代码
编辑:如果更改值的类型不是一个选项,您仍然可以使用正则表达式(在我看来更丑陋):
json_schema = {
"type": "object",
"properties": {
"value": {
"type": "string",
"pattern": "^\d{5,}|[5-9]\d{3}|4[1-9]\d\d|409[6-9]$"
}
}
}
这假设您的字符串没有前导零,也没有任何分隔符(,
、.
...)。我们匹配以下内容:
\d{5,}
: 5 位或更多位 (>=10000)
[5-9]\d{3}
: 5 到 9 后接 3 位数字 (5000-9999)
4[1-9]\d\d
: 4100 到 4999
409[6-9]
: 4096 到 4099
使用:
from jsonschema import validate
import jsonschema
我正在尝试使用 json 模式验证字符串的最小值 4096 且没有上限。我看到正则表达式模式匹配可能是一个选项,但不确定如何在没有上限的情况下执行此操作。
json_data = {"value": "4096"}
# what i would like to do
json_schema = {"type": "string", "minimum": 4096}
try:
validate(json_data, schema=json_schema)
return True
except jsonschema.ValidationError:
return False
非常感谢任何意见。如果需要其他信息,请发表评论。谢谢。
首先,您应该输入 int
而不是 string
。
然后你检查整个 json 对象的架构,value
是 key/property:
from jsonschema import validate
import jsonschema
json_data = {"value": 4096}
json_schema = {
"type": "object",
"properties": {
"value": {
"type": "number",
"minimum": 4096
}
}
}
try:
validate(json_data, schema=json_schema)
print(True)
except jsonschema.ValidationError:
print(False)
使用值 < 4096 和 >= 4096 尝试上面的代码
编辑:如果更改值的类型不是一个选项,您仍然可以使用正则表达式(在我看来更丑陋):
json_schema = {
"type": "object",
"properties": {
"value": {
"type": "string",
"pattern": "^\d{5,}|[5-9]\d{3}|4[1-9]\d\d|409[6-9]$"
}
}
}
这假设您的字符串没有前导零,也没有任何分隔符(,
、.
...)。我们匹配以下内容:
\d{5,}
: 5 位或更多位 (>=10000)[5-9]\d{3}
: 5 到 9 后接 3 位数字 (5000-9999)4[1-9]\d\d
: 4100 到 4999409[6-9]
: 4096 到 4099