Crate jsonschema[−][src]
jsonschema
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.
Supports:
- JSON Schema drafts 4, 6, 7 (except some optional test cases);
- Loading remote documents via HTTP(S);
Usage Examples:
A schema can be compiled with two main flavours:
- using default configurations
let compiled_schema = JSONSchema::compile(&schema)?;
- using custom configurations (such as define a Draft version)
let compiled_schema = JSONSchema::options() .with_draft(Draft::Draft7) .compile(&schema)?;
Example (CLI tool to highlight print errors)
use jsonschema::{CompilationError, Draft, JSONSchema}; use serde_json::json; fn main() -> Result<(), CompilationError> { let schema = json!({"maxLength": 5}); let instance = json!("foo"); let compiled = JSONSchema::options() .with_draft(Draft::Draft7) .compile(&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); } } Ok(()) }
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()
.
Re-exports
pub use error::CompilationError; | |
pub use error::ErrorIterator; | |
pub use error::ValidationError; |
Modules
error | Error types |
paths | Facilities for working with paths within schemas or validated instances. |
primitive_type | Primitive types for property type validators |
Structs
CompilationOptions | Full configuration to guide the |
JSONSchema | The structure that holds a JSON Schema compiled into a validation tree |
Enums
Draft | JSON Schema Draft version |
Functions
is_valid | A shortcut for validating |