jsonschema

A high-performance JSON Schema validator for Rust

Latest version: 0.45.0 registry icon
Maintenance score
100
Safety score
100
Popularity score
84
Check your open source dependency risks. Get immediate insight about security, stability and licensing risks.
Security
  Vulnerabilities
Version Suggest Low Medium High Critical
0.45.0 0 0 0 0 0
0.44.1 0 0 0 0 0
0.44.0 0 0 0 0 0
0.43.0 0 0 0 0 0
0.42.2 0 0 0 0 0
0.42.1 0 0 0 0 0
0.42.0 0 0 0 0 0
0.41.0 0 0 0 0 0
0.40.2 0 0 0 0 0
0.40.1 0 0 0 0 0
0.40.0 0 0 0 0 0
0.39.0 0 0 0 0 0
0.38.1 0 0 0 0 0
0.38.0 0 0 0 0 0
0.37.4 0 0 0 0 0
0.37.3 0 0 0 0 0
0.37.2 0 0 0 0 0
0.37.1 0 0 0 0 0
0.37.0 0 0 0 0 0
0.36.0 0 0 0 0 0
0.35.0 0 0 0 0 0
0.34.0 0 0 0 0 0
0.33.0 0 0 0 0 0
0.32.1 0 0 0 0 0
0.32.0 0 0 0 0 0
0.31.0 0 0 0 0 0
0.30.0 0 0 0 0 0
0.29.1 0 0 0 0 0
0.29.0 0 0 0 0 0
0.28.3 0 0 0 0 0
0.28.2 0 0 0 0 0
0.28.1 0 0 0 0 0
0.28.0 0 0 0 0 0
0.27.1 0 0 0 0 0
0.27.0 0 0 0 0 0
0.26.2 0 0 0 0 0
0.26.1 0 0 0 0 0
0.26.0 0 0 0 0 0
0.25.1 0 0 0 0 0
0.25.0 0 0 0 0 0
0.24.3 0 0 0 0 0
0.24.2 0 0 0 0 0
0.24.1 0 0 0 0 0
0.24.0 0 0 0 0 0
0.23.0 0 0 0 0 0
0.22.3 0 0 0 0 0
0.22.2 0 0 0 0 0
0.22.1 0 0 0 0 0
0.22.0 0 0 0 0 0
0.21.0 0 0 0 0 0
0.20.0 0 0 0 0 0
0.19.1 0 0 0 0 0
0.19.0 0 0 0 0 0
0.18.3 0 0 0 0 0
0.18.2 0 0 0 0 0
0.18.1 0 0 0 0 0
0.18.0 0 0 0 0 0
0.17.1 0 0 0 0 0
0.17.0 0 0 0 0 0
0.16.1 0 0 0 0 0
0.16.0 0 0 0 0 0
0.15.2 0 0 0 0 0
0.15.1 0 0 0 0 0
0.15.0 0 0 0 0 0
0.14.0 0 0 0 0 0
0.13.3 0 0 0 0 0
0.13.2 0 0 0 0 0
0.13.1 0 0 0 0 0
0.13.0 0 0 0 0 0
0.12.2 0 0 0 0 0
0.12.1 0 0 0 0 0
0.12.0 0 0 0 0 0
0.11.0 0 0 0 0 0
0.10.0 0 0 0 0 0
0.9.1 0 0 0 0 0
0.9.0 0 0 0 0 0
0.8.3 0 0 0 0 0
0.8.2 0 0 0 0 0
0.8.1 0 0 0 0 0
0.8.0 0 0 0 0 0
0.7.0 0 0 0 0 0
0.6.1 0 0 0 0 0
0.6.0 0 0 0 0 0
0.5.0 0 0 0 0 0
0.4.3 0 0 0 0 0
0.4.2 0 0 0 0 0
0.4.1 0 0 0 0 0
0.4.0 0 0 0 0 0
0.3.1 0 0 0 0 0
0.3.0 0 0 0 0 0
0.2.0 0 0 0 0 0
0.1.0 0 0 0 0 0

Stability
Latest release:

0.45.0 - This version is safe to use because it has no known security vulnerabilities at this time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform

Licensing

Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.

MIT   -   MIT License

Not a wildcard

Not proprietary

OSI Compliant



jsonschema

crates.io docs.rs build status codecov.io Supported Dialects

A high-performance JSON Schema validator for Rust.

use serde_json::json;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let schema = json!({"maxLength": 5});
    let instance = json!("foo");

    // One-off validation
    assert!(jsonschema::is_valid(&schema, &instance));
    assert!(jsonschema::validate(&schema, &instance).is_ok());

    // Build & reuse (faster)
    let validator = jsonschema::validator_for(&schema)?;

    // Fail on first error
    assert!(validator.validate(&instance).is_ok());

    // Iterate over errors
    for error in validator.iter_errors(&instance) {
        eprintln!("Error: {error}");
        eprintln!("Location: {}", error.instance_path());
    }

    // Boolean result
    assert!(validator.is_valid(&instance));

    // Structured output (JSON Schema Output v1)
    let evaluation = validator.evaluate(&instance);
    for annotation in evaluation.iter_annotations() {
        eprintln!(
            "Annotation at {}: {:?}",
            annotation.schema_location,
            annotation.annotations.value()
        );
    }

    Ok(())
}

You also can use it from the command line via the jsonschema-cli crate.

$ jsonschema-cli schema.json -i instance.json

See more usage examples in the documentation.

⚠️ Upgrading from older versions? Check our Migration Guide for key changes.

Highlights

  • 📚 Full support for popular JSON Schema drafts
  • 🔧 Custom keywords and format validators
  • 🌐 Blocking & non-blocking remote reference fetching (network/file)
  • 🎨 Structured Output v1 reports (flag/list/hierarchical)
  • ✨ Meta-schema validation for schema documents, including custom metaschemas
  • 🔗 Bindings for Python and Ruby
  • 🚀 WebAssembly support
  • 💻 Command Line Interface

Supported drafts

The following drafts are supported:

  • Draft 2020-12
  • Draft 2019-09
  • Draft 7
  • Draft 6
  • Draft 4

You can check the current status on the Bowtie Report.

Notable Users

Performance

jsonschema outperforms other Rust JSON Schema validators in most scenarios:

  • Up to 75-645x faster than valico and jsonschema_valid for complex schemas
  • Generally 2-52x faster than boon, and >5000x faster for recursive schemas

For detailed benchmarks, see our full performance comparison.

Minimum Supported Rust Version (MSRV)

This crate requires Rust 1.83.0 or later.

TLS Configuration

By default, jsonschema uses aws-lc-rs as the TLS cryptography provider, which is the default one in reqwest.

Using Ring Instead

You can opt into using ring as the TLS provider:

[dependencies]
jsonschema = {
    version = "0.42",
    default-features = false,
    features = ["resolve-http", "resolve-file", "tls-ring"]
}

NOTE: If both tls-aws-lc-rs and tls-ring features are enabled, aws-lc-rs takes precedence.

Acknowledgements

This library draws API design inspiration from the Python jsonschema package. We're grateful to the Python jsonschema maintainers and contributors for their pioneering work in JSON Schema validation.

Support

If you have questions, need help, or want to suggest improvements, please use GitHub Discussions.

Sponsorship

If you find jsonschema useful, please consider sponsoring its development.

Contributing

We welcome contributions! Here's how you can help:

See CONTRIBUTING.md for more details.

License

Licensed under MIT License.