1 #ifndef XAPP_MODEL_ModelBase_H
2 #define XAPP_MODEL_ModelBase_H
5 #include <nlohmann/json.hpp>
6 #include <nlohmann/json-schema.hpp>
9 using nlohmann::json_schema::json_validator;
10 using json = nlohmann::json;
15 std::invalid_argument invalid_parameter("Invalid Json Input");
17 template<typename ModelType>
18 bool _validate(const ModelType model) {
20 json_validator validator;
21 validator.set_root_schema(model.validator_schema);
24 validator.validate(_json);
25 } catch (const std::exception& e) {
26 std::cerr << "Struct Validation failed, here is why: " << e.what() << "\n";
33 json validator_schema = R"(
35 "$schema": "http://json-schema.org/draft-07/schema#",
40 return _validate(std::move(*this));
43 void validate_json(const json& _json) {
44 json_validator validator;
45 validator.set_root_schema(get_validator_schema());
47 validator.validate(_json);
48 } catch (const std::exception& e) {
54 virtual json get_validator_schema() const { return validator_schema; }
57 void from_json(const json& j, ModelBase& ref) {
60 void to_json(json& j, const ModelBase& ref) {
66 #endif /*XAPP_MODEL_ModelBase_H*/