Validate JSON in Java with JSON Schema

Describe and validate your JSON documents

I programmed a lot with XML and XML Schema helped me to define which elements and attributes can appear in a document. So I always wanted a grammar for JSON too.

JSON Schema is exactly what I wanted. It has the following advantages:
* describes existing data formats
* provides human- and machine-readable documentation
* validates data

I tried two json-schema validator implementations for java: Everit and Networknt. I like the validator schema from Everit because of the similarity to the Bean Validation API. But if you use Jackson than Networknt is a good choice. Now I show an example with Networknt.

This is simple product schema product.schema.json .

  "$schema": "",
  "title": "Product",
  "description": "A product from the catalog",
  "type": "object",
  "properties": {
    "id": {
      "description": "The unique identifier for a product",
      "type": "integer"
    "name": {
      "description": "Name of the product",
      "type": "string"
    "price": {
      "type": "number",
      "minimum": 0
  "required": ["id", "name", "price"]

And if you want to validate a JSON document called product.json than do the following:

JsonSchemaFactory factory =
InputStream is =  
schema = factory.getSchema(is);

JsonNode node =

Set<ValidationMessage errors = schema.validate(node);

Just read in the JSON Schema. Then map the JSON document to a JsonNode and call schema.validate(). That’s it.

I have shown you how to validate a JSON document which is very useful for automated testing and validating client submitted data. The whole implementation of this example and more can be found on Github.

Everit-org json-schema-validator
Networknt json-schema-validator