A JSON Schema validation implementation in pure Java, which aims for correctness and performance, in that order
Java Shell
Latest commit 4bf148a May 23, 2018

README.md

License LGPLv3 License ASL 2.0 Build Status Maven Central

Read me first

The current version of this project is licensed under both LGPLv3 (or later) and ASL 2.0. The old version (2.0.x) was licensed under LGPL 3.0 (or later) only.

Version 2.2 is out. See here for the list of changes compared to 2.0. And of course, it still has all the features of older versions.

What this is

This is an implementation with complete validation support for the latest JSON Schema draft (v4, including hyperschema syntax support) and the previous draft (v3 -- no hyperschema support though). Its list of features would be too long to enumerate here; please refer to the links above!

Should you wonder about it, this library is reported to work on Android. Starting with version 2.2.x, all APK conflicts have been resolved, so you can use this in this context as well.

Google Group

This project has a dedicated Google group. For any questions you have about this software package, feel free to post! The author (me) will try and respond in a timely manner.

Testing online

You can test this library online; this web site is in a project of its own, which you can fork and run by yourself.

Versions

Available downloads

Gradle/maven

This package is available on Maven central; the artifact is as follows:

Gradle:

dependencies {
    compile(group: "com.github.java-json-tools", name: "json-schema-validator", version: "2.2.10");
}

Maven:

<dependency>
    <groupId>com.github.java-json-tools</groupId>
    <artifactId>json-schema-validator</artifactId>
    <version>2.2.10</version>
</dependency>

"Full" jar; command line

OUTDATED: Let me know if you need this in the issues section.

This jar contains the library plus all its dependencies. Download the lib jar (a little more than 6 MiB) from Bintray.

Versioning scheme policy

The versioning scheme is defined by the middle digit of the version number:

  • if this number is even, then this is the stable version; no new features will be added to such versions, and the user API will not change (save for some additions if requested).
  • if this number is odd, then this is the development version; new features will be added to those versions only, and the user API may change.

Relevant documents

This implementation is based on the following drafts:

More...

For a detailed discussion of the implementation, see here.

Please see the wiki for more details.