JSON Schema Validation

From Chorke Wiki
Revision as of 19:47, 5 January 2024 by Shahed (talk | contribs) (→‎Knowledge)
Jump to navigation Jump to search
<dependency>
    <groupId>com.networknt</groupId>
    <artifactId>json-schema-validator</artifactId>
    <version>1.0.42</version>
</dependency>
private static InputStream inputStreamFromClasspath(String path) {
    return Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
}
 
public static void main(String[] args) throws Exception {
    ObjectMapper objectMapper = new ObjectMapper();
    JsonSchemaFactory schemaFactory = JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V201909);
 
    try (
            InputStream jsonStream = inputStreamFromClasspath("example.json");
            InputStream schemaStream = inputStreamFromClasspath("example-schema.json")
    ) {
        JsonNode json = objectMapper.readTree(jsonStream);
        JsonSchema schema = schemaFactory.getSchema(schemaStream);
        Set<ValidationMessage> validationResult = schema.validate(json);
 
        // print validation errors
        if (validationResult.isEmpty()) {
            System.out.println("no validation errors :-)");
        } else {
            validationResult.forEach(vm -> System.out.println(vm.getMessage()));
        }
    }
}

Schema Naming

Age:           Age.schema.json
Address:   Address.schema.json
Account:   Account.schema.json
Quantity: Quantity.schema.json

Knowledge

https://cdnjs.com/libraries/ajv
https://cdnjs.com/libraries/moment.js
https://cdnjs.com/libraries/mustache.js
https://cdnjs.com/libraries/handlebars.js
closure-compiler\
 --js ./handlebars.js\
 --js_output_file ./handlebars.min.js\
 --language_out ECMASCRIPT_2015

closure-compiler\
 --js ./mustache.js\
 --js_output_file ./mustache.min.js\
 --language_out ECMASCRIPT_2015
closure-compiler\
 --js ./moment.js\
 --js_output_file ./moment.min.js\
 --language_out ECMASCRIPT_2015
closure-compiler\
 --js ./ajv7.js\
 --js_output_file ./ajv7.min.js\
 --language_out ECMASCRIPT_2015



TypeReference<SomeStype> ref = new TypeReference<SomeType>(){};

Feasibility

Java
https://github.com/eclipse-vertx/vertx-json-schema

JavaScript
https://ajv.js.org/

References