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