悠悠楠杉
网站页面
安装核心依赖库:
pip install jsonschema定义Schema并验证数据的典型示例:
from jsonschema import validate
user_schema = {
"type": "object",
"properties": {
"username": {"type": "string", "minLength": 6},
"age": {"type": "integer", "minimum": 18, "maximum": 99}
},
"required": ["username", "age"]
}
data = {"username": "pythonista", "age": 25}
validate(instance=data, schema=user_schema) # 验证通过无异常当数据不符合规则时,库会抛出ValidationError异常,开发者可通过try-except捕获并处理:
try:
validate(instance={"username": "dev"}, schema=user_schema)
except Exception as e:
print(f"数据校验失败: {e.message}") # 输出:'age' is a required propertyanyOf、allOf等关键字实现复杂逻辑:advanced_schema = {
"anyOf": [
{"required": ["email"]},
{"required": ["phone"], "properties": {"phone": {"pattern": "^1\\d{10}$"}}}
]
}FormatChecker实现手机号、身份证等自定义规则:from jsonschema import FormatChecker
checker = FormatChecker()
@checker.checks("phone_format")
def validate_phone(phone):
import re
return bool(re.match(r"^1[3-9]\d{9}$", phone))
schema = {"properties": {"phone": {"format": "phone_format"}}}
validate({"phone": "13800138000"}, schema, format_checker=checker)Draft7Validator等类预先编译)通过合理运用JSON Schema,开发者能显著减少手动校验代码量,同时提高系统的抗异常数据能力。建议在API接口层、数据清洗流程等关键环节强制实施Schema验证,这将为项目的长期维护性带来巨大价值。