0.2.1 |
|
---|---|
0.2.0 |
|
0.1.0 |
|
#94 in #extensible
67KB
2K
SLoC
JSON Model Rust
Extensible framework for validating JSON structures.
Usage Example
# Cargo.toml
[dependencies]
json-model = "0.2"
serde_json = "1"
// 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, Error> {
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
Dependencies
~2.5–4MB
~74K SLoC