本文目录导读:

是的,在 Python 中进行 JSON Schema 验证时,最常用且推荐的方式就是使用 jsonschema 库。
jsonschema 是 Python 中最流行的 JSON Schema 验证库,它完全实现了 JSON Schema 规范(支持 Draft 4/6/7/2019-09/2020-12 等多个版本)。
基本用法
安装
pip install jsonschema
简单示例
from jsonschema import validate
# 定义 Schema
schema = {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer", "minimum": 0},
"email": {"type": "string", "format": "email"}
},
"required": ["name", "age"]
}
# 待验证的数据
data = {
"name": "小明",
"age": 25,
"email": "xiaoming@example.com"
}
# 验证
validate(instance=data, schema=schema)
print("验证通过!")
处理验证错误
from jsonschema import validate, ValidationError
try:
invalid_data = {
"name": "小明",
"age": -5, # 年龄不能为负
"email": "invalid-email" # 邮箱格式错误
}
validate(instance=invalid_data, schema=schema)
except ValidationError as e:
print(f"验证失败: {e.message}")
print(f"错误路径: {list(e.path)}")
print(f"Schema路径: {list(e.schema_path)}")
使用验证器类(更灵活)
from jsonschema import Draft7Validator
# 创建验证器
validator = Draft7Validator(schema)
# 逐个检查错误
errors = sorted(validator.iter_errors(data), key=lambda e: e.path)
for error in errors:
print(f"属性: {error.path[0]}, 错误: {error.message}")
高级用法
自定义格式验证
from jsonschema import validate, FormatChecker
# 创建格式检查器
format_checker = FormatChecker()
# 使用格式检查
validate(
instance=data,
schema=schema,
format_checker=format_checker
)
引用外部 Schema
from jsonschema import RefResolver, Draft7Validator
# 创建 Schema 仓库
schema_store = {
"http://example.com/schemas/user.json": {
"type": "object",
"properties": {
"id": {"type": "integer"},
"name": {"type": "string"}
}
}
}
# 创建引用解析器
resolver = RefResolver.from_schema(schema_store)
# 主 Schema 引用外部 Schema
main_schema = {
"$ref": "http://example.com/schemas/user.json"
}
# 验证
validator = Draft7Validator(main_schema, resolver=resolver)
validator.validate({"id": 1, "name": "Alice"})
其他替代方案
虽然 jsonschema 是最常用的,但也有一些其他选择:
-
fastjsonschema:性能更好,适合大规模验证
import fastjsonschema validate = fastjsonschema.compile(schema) validate(data)
-
JSON Schema 标准库(Python 3.11+):内置轻量级验证
import json from jsonschema import Draft202012Validator
推荐
- 一般使用:直接用
jsonschema库,功能最全面 - 性能要求高:考虑
fastjsonschema - 简单场景:Python 3.11+ 的内置验证器
是的,Python 中 JSON Schema 验证的首选方案就是使用 jsonschema 库。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播