# JSON Model Rust [![crates.io](https://img.shields.io/crates/v/json-model.svg)](https://crates.io/crates/json-model) [![Released API docs](https://docs.rs/json-model/badge.svg)](https://docs.rs/json-model) [![MIT licensed](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE) _Extensible framework for validating JSON structures._ ## Usage Example ```toml # Cargo.toml [dependencies] json-model = "0.2" serde_json = "1" ``` ```rust // main.rs extern crate json_model; #[macro_use] extern crate serde_json; use json_model::{Error, Validator}; fn document() -> serde_json::Value { json!({ "id": "model", "definitions": [ { "id": "user", "type": "object", "properties": { "required": ["username", "password"], "definitions": [ { "id": "username", "type": "string", "minLength": 3, "maxLength": 30, }, { "id": "password", "type": "string", "minLength": 5, "maxLength": 256, }, { "id": "age", "type": "integer", "exclusiveMin": 0, "max": 273, } ] } } ] }) } fn valid_input() -> serde_json::Value { json!({ "username": "johndoe", "password": "Tr0ub4dor&3", "age": 12, }) } fn invalid_input() -> serde_json::Value { json!({ "username": "johndoe", "password": "123", // `password` must be at least 5 characters long }) } fn build() -> Result { Validator::new()?.load_json(&document())?.finalize() } fn main() { let v = build().unwrap(); assert!(v.validate_json("model/user", &valid_input()).is_ok()); assert!(v.validate_json("model/user", &invalid_input()).is_err()); } ``` ## License MIT