Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  * Copyright (c) 2012, Francis Galiegue <>
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the Lesser GNU General Public License as
  * published by the Free Software Foundation, either version 3 of the
  * License, or (at your option) any later version.
  * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * Lesser GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <>.
package com.github.fge.jsonschema.examples;
Fourth example: schema loading via URIs, and subschema addressing

link to source code

link to schema

This demonstrates three capabilities of com.github.fge.jsonschema.main.JsonSchemaFactory:

  • the ability to load schemas via URIs;
  • the ability to address subschemas in a schema;
  • the ability to detect schema versions via $schema (as in Example2).

The implementation provides a resource scheme which allows to load JSON from files in the classpath. It is strictly equivalent to calling java.lang.Class.getResourceAsStream(java.lang.String). The URI used is resource:/org/eel/kitchen/jsonschema/examples/fstab-sub.json. Because we want to validate against the fstab subschema, we use com.github.fge.jsonschema.main.JsonSchemaFactory.fromURI(java.lang.String,java.lang.String) to load the actual schema, with the second argument being JSON Pointer /fstab. Note that unlike methods which load schemas directly from JSON, this method and other similar methods can throw com.github.fge.jsonschema.main.JsonSchemaException.

Since the root schema declares $schema to be draft v4, the set of validators used will be validators defined for draft v4 (instead of the default draft v3).

Files validated, and the validation outputs, are the same as for Example2.

public final class Example4
    extends ExampleBase
    private static final String SCHEMA_URI
        = "resource:/com/github/fge/jsonschema/examples/fstab-sub.json";
    public static void main(final String... args)
        throws IOExceptionJsonSchemaException
        final JsonNode good = loadResource("/fstab-good.json");
        final JsonNode bad = loadResource("/fstab-bad.json");
        final JsonNode bad2 = loadResource("/fstab-bad2.json");
        final JsonSchemaFactory factory = JsonSchemaFactory.defaultFactory();
        final JsonSchema schema = factory.fromURI("/fstab");
        ValidationReport report;
        report = schema.validate(good);
        report = schema.validate(bad);
        report = schema.validate(bad2);
New to GrepCode? Check out our FAQ X