Crate jsonschema[][src]

Expand description


A crate for performing fast JSON Schema validation. It is fast due to schema compilation into a validation tree, which reduces runtime costs for working with schema parameters.


  • JSON Schema drafts 4, 6, 7 (except some optional test cases);
  • Loading remote documents via HTTP(S);

This library is functional and ready for use, but its API is still evolving to the 1.0 API.

Usage Examples:

A schema can be compiled with two main flavours:

  • using default configurations
let compiled_schema = JSONSchema::compile(&schema).expect("A valid schema");
  • using custom configurations (such as define a Draft version)
let compiled_schema = JSONSchema::options()
    .expect("A valid schema");

Example (CLI tool to highlight print errors)

use jsonschema::{Draft, JSONSchema};
use serde_json::json;

let schema = json!({"maxLength": 5});
let instance = json!("foo");
let compiled = JSONSchema::options()
    .expect("A valid schema");
let result = compiled.validate(&instance);
if let Err(errors) = result {
    for error in errors {
        println!("Validation error: {}", error);
        println!("Instance path: {}", error.instance_path);

Each error has an instance_path attribute that indicates the path to the erroneous part within the validated instance. It could be transformed to JSON Pointer via .to_string() or to Vec<String> via .into_vec().


pub use error::ErrorIterator;
pub use error::ValidationError;


Error types

Implementation of json schema output formats specified in

Facilities for working with paths within schemas or validated instances.

Primitive types for property type validators


Full configuration to guide the JSONSchema compilation.

The structure that holds a JSON Schema compiled into a validation tree


JSON Schema Draft version


A shortcut for validating instance against schema. Draft version is detected automatically.