jsonschema
A JSON Schema validator implementation. It compiles schema into a validation tree to have validation as fast as possible.
Supported drafts:
- Draft 7
- Draft 6
- Draft 4 (except optional
bignum.json
test case)
# Cargo.toml
= "0.3"
To validate documents against some schema and get validation errors (if any):
use ;
use json;
If you only need to know whether document is valid or not (which is faster):
use is_valid;
use json;
Or use a compiled schema (preferred):
use ;
use json;
Performance
There is a comparison with other JSON Schema validators written in Rust - jsonschema_valid
and valico
.
Test machine i8700K (12 cores), 32GB RAM.
Performance of jsonschema::JSONSchema.is_valid
. Ratios are given against compiled jsonschema:
- Big valid input (
canada_schema.json
andcanada.json
) - Small valid input (
small_schema.json
andsmall_valid.json
) - Small invalid input (
small_schema.json
andsmall_invalid.json
)
Case | jsonschema_valid | valico | jsonschema (not compiled) | jsonschema (compiled) |
---|---|---|---|---|
Big valid | 56.746 ms (x187.2) | 149.49 ms (x493.17) | 317.14 us (x1.04) | 303.12 us |
Small valid | 2.23 us (x14.92) | 3.87 us (x25.9) | 3.76 us (x25.17) | 149.38 ns |
Small invalid | 515.22 ns (x85.58) | 4.08 us (x677.74) | 3.63 us (x602.99) | 6.02 ns |
As you can see the compiled version is faster, especially for large inputs. However, not-compiled version is slower
on smaller inputs than jsonschema_valid
.
You can find benchmark code in benches/jsonschema.rs
NOTE. This library is in early development.