Python的高性能JSON Schema验证器
项目描述
jsonschema-rs
Python的高性能JSON Schema验证器。
import jsonschema_rs
schema = {"maxLength": 5}
instance = "foo"
# One-off validation
try:
jsonschema_rs.validate(schema, "incorrect")
except jsonschema_rs.ValidationError as exc:
assert str(exc) == '''"incorrect" is longer than 5 characters
Failed validating "maxLength" in schema
On instance:
"incorrect"'''
# Build & reuse (faster)
validator = jsonschema_rs.validator_for(schema)
# Iterate over errors
for error in validator.iter_errors(instance):
print(f"Error: {error}")
print(f"Location: {error.instance_path}")
# Boolean result
assert validator.is_valid(instance)
⚠️ 从pre-0.20.0升级?请检查我们的迁移指南以了解关键更改。
亮点
- 📚 支持流行的JSON Schema草案
- 🌐 远程引用抓取(网络/文件)
- 🔧 自定义格式验证器
支持的草案
各草案的合规程度不同,较新版本可能未实现一些关键字。
您可以在Bowtie Report上检查当前状态。
限制
- 不支持任意精度数字
安装
要使用pip安装jsonschema-rs,请运行以下命令
pip install jsonschema-rs
使用方法
如果您有一个JSON字符串形式的模式,则可以将其传递给validator_for
以避免在Python端进行解析
validator = jsonschema_rs.validator_for('{"minimum": 42}')
...
您可以使用特定于草稿的验证器来处理不同的 JSON Schema 版本
import jsonschema_rs
# Automatic draft detection
validator = jsonschema_rs.validator_for({"minimum": 42})
# Draft-specific validators
validator = jsonschema_rs.Draft7Validator({"minimum": 42})
validator = jsonschema_rs.Draft201909Validator({"minimum": 42})
validator = jsonschema_rs.Draft202012Validator({"minimum": 42})
JSON Schema 允许通过 format
关键字进行格式验证。虽然 jsonschema-rs
提供了内置的标准格式验证器,但您也可以为特定领域字符串格式定义自定义格式验证器。
要实现自定义格式验证器
- 定义一个函数,该函数接受一个
str
并返回一个bool
。 - 将其与
formats
参数一起传递。
import jsonschema_rs
def is_currency(value):
# The input value is always a string
return len(value) == 3 and value.isascii()
validator = jsonschema_rs.validator_for(
{"type": "string", "format": "currency"},
formats={"currency": is_currency}
)
validator.is_valid("USD") # True
validator.is_valid("invalid") # False
性能
jsonschema-rs
是为高性能设计的,在大多数场景下优于其他 Python JSON Schema 验证器
- 对于复杂模式和大型实例,比
jsonschema
快 30-390x - 在 CPython 上,通常比
fastjsonschema
快 2-5x - 对于非常小的模式,性能相当或略慢
有关详细基准测试,请参阅我们的 完整性能比较。
Python 支持
jsonschema-rs
支持 CPython 3.8、3.9、3.10、3.11 和 3.12。
致谢
此库从 Python jsonschema
包中获得了 API 设计的灵感。我们感谢 Python jsonschema
维护者及贡献者们在 JSON Schema 验证方面的开创性工作。
支持
如果您有任何问题、需要帮助或希望提出改进建议,请使用 GitHub 讨论区。
赞助
如果您觉得 jsonschema-rs
有用,请考虑 赞助其开发。
贡献
我们欢迎贡献!以下是您可以如何帮助的方式
- 分享您的用例
- 实现缺失的关键字
- 修复来自 JSON Schema 测试套件 的失败测试用例
有关更多详细信息,请参阅 CONTRIBUTING.md。
许可
许可协议下
许可证
关闭
jsonschema_rs-0.22.2.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 53a483511a4f0f78bfdb322d727735b7a7b77e1908e49dca11af164a13d97f10 |
|
MD5 | 5091cb870c8b15d21b05794533c9624a |
|
BLAKE2b-256 | a0837e4f8dc94ad10824e3ba4fce9875de0b498a699c87b1cc6fe5b8c96e4b4a |
关闭
jsonschema_rs-0.22.2-cp312-none-win_amd64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 71e58c02ad285f033f1d18237aa05188a22dcdac3f278a0453eef94f27874922 |
|
MD5 | e14465057d8417798a4583d79c0e095d |
|
BLAKE2b-256 | 97e99056d0bc0e1486bf47fcb006c9193601466e312b3e7a548ec60026628463 |
关闭
jsonschema_rs-0.22.2-cp312-none-win32.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 009a364fb90136a246e7b937cb54261858378ce7a11ec65bdcbd62068bc9bcd2 |
|
MD5 | 4fedb513cddfe355a1d299f745b3883b |
|
BLAKE2b-256 | b95a6842d4df1004ff2c6228af4c4583e01168549924beb429af2618d4f1a84f |
关闭
jsonschema_rs-0.22.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 98cf37422092f18a59ab2767b9b25a5c551ed84ba76324d3db92197fdeccd4a5 |
|
MD5 | f87c1bae1dc28d7b228b14ccb820e912 |
|
BLAKE2b-256 | 0a72bc4902f70c9a0899981088c5a7c3fcf680f29d480963c6964977c696aac3 |
关闭
哈希值 用于 jsonschema_rs-0.22.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1e6a3e737cd652ba37f52194ff5bc26228b1f8ca22584cf8f1d342e6bdfeb0de |
|
MD5 | b0b47ab2f868dde69c24dccd0d2e257a |
|
BLAKE2b-256 | 89fa71421e36c4cc6ac20f056bc1d7d4271cad0edc234ff422805548ed1b4a9b |
关闭
哈希值 用于 jsonschema_rs-0.22.2-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ba8b16b2c6c93ac8f4782e6075a262d2cad5d02da09936514678933d1c36a25d |
|
MD5 | 7caec03d131866231b906ee15369189a |
|
BLAKE2b-256 | 759323ddf9c647cae9aa1feff9fa56247694ef227ad14327cc725ae49b492595 |
关闭
哈希值 用于 jsonschema_rs-0.22.2-cp312-cp312-macosx_10_12_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fd1e0b4d05ca7e634956fe85ce0f45a1afea73037d0ff9fb83c76f28cc27dbe1 |
|
MD5 | c178be762dd69bee754dfd74a242b4a2 |
|
BLAKE2b-256 | 26c3926ab14825a6982121cd8b684e971ac400e2f23fcbc632612e87db28e983 |
关闭
哈希值 用于 jsonschema_rs-0.22.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7caccb8b3247f9295314d13d62b6e0349123d5af5c383a6738b785209d8aa63d |
|
MD5 | e5f9922d850bb22b30ae86b9ca290e61 |
|
BLAKE2b-256 | eed38af7f95d65053531787403dbb805b9e959f2bbafcc845724e194a8580aed |
关闭
哈希值 用于 jsonschema_rs-0.22.2-cp311-none-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 258a6339e0cf9fbc648279afb6005da70863315ef20a6939d2b9f439e42c1891 |
|
MD5 | 3080942b0091b23f953348f3a35b0527 |
|
BLAKE2b-256 | 7ede23156300f43a1d448732542a49c0349098d5113491d111d646bcd4571fb8 |
关闭
哈希值 用于 jsonschema_rs-0.22.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fc01bda6ace8aa058bcbb19ea7bbc1d612e84a93fc1ba3714c108bf5a01948de |
|
MD5 | 341aa4de7945349477e8adfa2072b62c |
|
BLAKE2b-256 | 1d333677cfff6f1007c8c7699aee15d196a805926aa967f2663295b1e01e31ce |
关闭
哈希值 用于 jsonschema_rs-0.22.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 828d347000cfa93feed6d95cdc68639565d0aa07799e5847e7ec5e48de223b84 |
|
MD5 | 9d3a8eb1b7c14b0ddad5597e327fa899 |
|
BLAKE2b-256 | 8b7d834ef655b28b11a0055af7e1d28ac084e341b7bf5f057a4907ede1d5b52f |
关闭
哈希值 用于 jsonschema_rs-0.22.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a4f05a6d615d53290cc0d29e7ff9783a2dccea02e74991837f37e302f83d1c9f |
|
MD5 | 614dbe467937be46d25c3ab02dbf9e94 |
|
BLAKE2b-256 | 64f94c94acd1baf6e859a702e088bf83b4b9bcd7348daf106582f846b6143191 |
关闭
哈希值 用于 jsonschema_rs-0.22.2-cp311-cp311-macosx_10_12_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 79911ed5663f2c79b98b9bbee75ac237267630fab070baeb870944e1091c3eda |
|
MD5 | 6ff75115074fd2828f6aa28453d688a0 |
|
BLAKE2b-256 | 2876203ceeac463dfc772694c0daa7e36d9f770cbe32c4463f6d1d43d44181b5 |
关闭
哈希值 用于 jsonschema_rs-0.22.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 164a386b7118750610543d49467091953b41352b0be658875e62d1365bf307ed |
|
MD5 | 1576af3d420f6088126318d398d1682d |
|
BLAKE2b-256 | 80a974f1498aeeb137bfd5699a923f75779f80257de353c06d7abd6517cc8af3 |
关闭
哈希值 用于 jsonschema_rs-0.22.2-cp310-none-win_amd64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2e50036e670443fc3b5752a48df73c1eb4d8a2be5084567cd26bebd9e0063409 |
|
MD5 | 46b963356671feed95dd864a3247ae2d |
|
BLAKE2b-256 | 6ddf74e312732030b40b0a6287b8915cea3ca8bc6d251e693d01c27d235752b8 |
关闭
哈希值 for jsonschema_rs-0.22.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 36bd10556cf0114fd62688e5d2998fee0a4dbe4fa767413014568ddefaf0fd45 |
|
MD5 | f851f51308958e31bca090d87c6b34db |
|
BLAKE2b-256 | 8ac52a12ed18769ec101f68a3f8a788cc221f3ae8a63420880f2c99673f06474 |
关闭
哈希值 for jsonschema_rs-0.22.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 969b1af146ae592e395e9eb4b8d7092f2822f9fd4e04837ffcea9d26549aabd0 |
|
MD5 | 2ae39aa043ff9fbcd3bb2685808cad4e |
|
BLAKE2b-256 | a7eff8ebc6570305928f1fd53d9c43f5293218b643cfc038522e5dc4b7591a73 |
关闭
哈希值 for jsonschema_rs-0.22.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6fdf26f20fad1f2d0fd312c16637e4064d4518f32df937f7e184771e9025b5c8 |
|
MD5 | 3659ae45b73426fbcdab95aba787a580 |
|
BLAKE2b-256 | cd6ba1afa0fc2ba1bd8fb34cba27f227827e4823db808e48992ca3bb786fba2d |
关闭
哈希值 for jsonschema_rs-0.22.2-cp310-cp310-macosx_10_12_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 21a5e9bbf140673096e70f293359eb1aa6f2a9402b575002c2466801604a2c6f |
|
MD5 | 996d1cfcb2c85fa097a2b2233f661667 |
|
BLAKE2b-256 | 79a0f9703bd4b5ed1175b6af2135926d6d9ffd735a006ddb2bff5ea737a7fc8a |
关闭
哈希值 for jsonschema_rs-0.22.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1a1befe420c719d79ccb66ea71aafe0296fe8e4f4e4c0903673e65f8ba572b30 |
|
MD5 | 1b8cca63a33ecc8068e279fa04f0e8f4 |
|
BLAKE2b-256 | 28f9ee17ad48d964efd0633ce2bcf0be4f1a21ea36192db5b88ec725f634c6e8 |
关闭
哈希值 for jsonschema_rs-0.22.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e466485846f9dc7f35f65c42ae852909d204ad0eb3af83a237cddad4efd2f65d |
|
MD5 | 7bc14108da5b407e6bea89737c8a7b73 |
|
BLAKE2b-256 | 7763ae67de2e1259387f17958e7259e485d467999154aefef492e0b98067ac28 |
关闭
哈希值 for jsonschema_rs-0.22.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 537101d4bb145c6a9e0ed1201eafae85e45cfcdf50f5ef4bcaf743c8ab5813b5 |
|
MD5 | 60e9363927bd7b8041aec3e3a5186376 |
|
BLAKE2b-256 | 126212980200ae32bb94e7d8505e7142b1f5a0d5b6491c04c55294ff500d1aef |
关闭
哈希值 for jsonschema_rs-0.22.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 299eb52f646be09c14d5c6146b4d49cfc7f90dab5b78d3b6a9b3907552b673c4 |
|
MD5 | f26c179975fe8914a6761ce8f76a51ab |
|
BLAKE2b-256 | d6e35cf2421fe4e2f69c537d369a3a17d477e1e52e9324b1c6bee9c92a02cb76 |
关闭
哈希值 for jsonschema_rs-0.22.2-cp39-cp39-macosx_10_12_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 089bce66726794ef6cb0b42cdd498e5da756ee763c2b88007402deee57aa537e |
|
MD5 | 8659b71c883a24d7b7401ccf501e1db4 |
|
BLAKE2b-256 | 2eca78ea4c1b1f3b5701cd8d3dbe26eef6998559576d4e3906eeb266de1aecaf |
关闭
哈希值 for jsonschema_rs-0.22.2-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6071fb01d55904f4414ed2132d261e7243a6cf9edab126a508295cc396e956f6 |
|
MD5 | eace8b12402fccf2988f8a10a65b3b0e |
|
BLAKE2b-256 | fa1528230205e0df2b6e6039b7f4b0196db5e2e099ec2d04dfa8eb590e53021b |
关闭
哈希值 for jsonschema_rs-0.22.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 20b0c0b4ac5d3dec65b41b5a5a3134c153890e446690bebd991b218ed8f0bfe1 |
|
MD5 | 2cf843a84ef41441896329d5cf7e6dff |
|
BLAKE2b-256 | 469e562d0ab82ffd81dc1df8e4ecd4847ea98e983a39ce960c78a1d0b043682f |
关闭
哈希值 for jsonschema_rs-0.22.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2d06aa51c1bb29fa61196a7c076b477d2d2e1e7184c6a6792651cb10ef88de92 |
|
MD5 | c58f01d1e65650879bced79a34d0f11d |
|
BLAKE2b-256 | 24567c40ce8e1dd8ae95ca70de85573eb045ca2e7df42b3756d6f28c1d1528ba |
关闭
哈希值 for jsonschema_rs-0.22.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 947c95057753df9de8294c8dc1ecefbfc991c771cc66d0deb0b2595d750be167 |
|
MD5 | 14d3e90e83b0edff1b5efed36098b9bd |
|
BLAKE2b-256 | 2f723dd5c3b26a270acbae2615210872a39265f640d3cbc5c0eb484e0b2b5c22 |
关闭
哈希值 for jsonschema_rs-0.22.2-cp38-cp38-macosx_10_12_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f567fb61876fa84ed5bcd8e4fb4263f40c37bb5ba76484c96a1fb14bfbe80193 |
|
MD5 | 6e0d17614b5d75395d046ac63787e7e9 |
|
BLAKE2b-256 | 302f4c4a3f5c0a104e29f361cdd99f97d5737d783b5e58efad52f62a5357c31e |
关闭
哈希值 for jsonschema_rs-0.22.2-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 06fdc4a67b1ee29df87c838b0a3de943d4e81f72bf25398cb38eebac0e1e4bbc |
|
MD5 | 0aeb5e4c7b627aa849070ff581e718a1 |
|
BLAKE2b-256 | 5bff86c803b0c55a101c5c3cf272a9c0003661353653be2573b65c644e0aa35c |