valico/json_schema/validators/
required.rs

1use serde_json::{Value};
2
3use super::super::errors;
4use super::super::scope;
5
6#[allow(missing_copy_implementations)]
7pub struct Required {
8    pub items: Vec<String>
9}
10
11impl super::Validator for Required {
12    fn validate(&self, val: &Value, path: &str, _scope: &scope::Scope) -> super::ValidationState {
13        let object = nonstrict_process!(val.as_object(), path);
14        let mut state = super::ValidationState::new();
15
16        for key in self.items.iter() {
17            if !object.contains_key(key) {
18                state.errors.push(Box::new(
19                    errors::Required {
20                        path: [path, key.as_ref()].join("/")
21                    }
22                ))
23            }
24        }
25
26        state
27    }
28}