2
3
4
5
6
7
8
9#include <nlohmann/json-schema.hpp>
18static void usage(
const char *name)
20 std::cerr <<
"Usage: " << name <<
" <schema> < <document>\n";
26 std::string filename =
"./" + uri
.path();
27 std::ifstream lf(filename);
29 throw std::invalid_argument(
"could not open " + uri
.url() +
" tried with " + filename);
32 }
catch (
const std::exception &e) {
39 void error(
const nlohmann::json::json_pointer &ptr,
const json &instance,
const std::string &message)
override
42 std::cerr <<
"ERROR: '" << ptr <<
"' - '" << instance <<
"': " << message <<
"\n";
46int main(
int argc,
char *argv[])
51 std::ifstream f(argv[1]);
53 std::cerr <<
"could not open " << argv[1] <<
" for reading\n";
61 }
catch (
const std::exception &e) {
62 std::cerr << e.what() <<
" at " << f.tellg() <<
" - while parsing the schema\n";
74 }
catch (
const std::exception &e) {
75 std::cerr <<
"setting root schema failed\n";
76 std::cerr << e.what() <<
"\n";
84 }
catch (
const std::exception &e) {
85 std::cerr <<
"json parsing failed: " << e.what() <<
" at offset: " << std::cin.tellg() <<
"\n";
93 std::cerr <<
"schema validation failed\n";
97 std::cerr <<
"document is valid\n";
void error(const nlohmann::json::json_pointer &ptr, const json &instance, const std::string &message) override
void error(const json::json_pointer &, const json &, const std::string &) override
void set_root_schema(const json &)
json_validator(schema_loader=nullptr, format_checker=nullptr, content_checker=nullptr)
json validate(const json &, error_handler &, const json_uri &initial_uri=json_uri("#")) const
const std::string & path() const
int main(int argc, char *argv[])
static void loader(const json_uri &uri, json &schema)
static void usage(const char *name)
void default_string_format_check(const std::string &format, const std::string &value)