JSON has became a de-facto standard for webservices, replacing XML web services. It has native support in web browser clients.

That makes JSON is the standard of choice for UI-oriented services. It has a good support on mobile devices. Also, it provides smaller data payload size compared to XML and it’s very sufficient for high-load systems as it saves a traffic. But what is for data validation? For XML web services there is a XML Schema. It comes ti mind, that similar standard for JSON should be called «JSON Schema». And it really exists!

There are a number of libraries for working with JSON Schema, including validators, documentation generators and data processing.

For java, there is a library which implements JSON message validation: json-schema-validator. It uses jackson library as its’ core and can be used in any java environment.

Here is demo application project: json-schema-validator-demo

Code sample:

import com.fasterxml.jackson.databind.JsonNode;
import com.github.fge.jsonschema.main.JsonValidator;
import com.github.fge.jsonschema.main.JsonSchemaFactory;
import com.github.fge.jsonschema.core.report.ProcessingReport;
import com.github.fge.jsonschema.core.util.AsJson;
...

JsonValidator VALIDATOR  = JsonSchemaFactory.byDefault().getValidator();

JsonNode schemaNode = ...
JsonNode data = ...

ProcessingReport report = VALIDATOR.validateUnchecked(schemaNode, data);

final boolean success = report.isSuccess();

final JsonNode reportAsJson = ((AsJson) report).asJson();

Demo applicaiton: https://json-schema-validator.herokuapp.com/