Jakarta JSON
Required dependencies
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.1.3</version>
</dependency>
implementation 'jakarta.json:jakarta.json-api:2.1.3'
This library contains only API without concrete implementation. It is required to add also some library that implements this API. Parsson is a reference implementation, and it is used in tests:
<dependency>
<groupId>org.eclipse.parsson</groupId>
<artifactId>parsson</artifactId>
<version>1.1.7</version>
</dependency>
implementation 'org.eclipse.parsson:parsson:1.1.7'
Adapter classes are:
Provider node
The JsonNode abstraction wraps a concrete class from JSON/YAML library, which is called a "provider node." It is possible to interact with the API using provider nodes directly, but there is no type information at compile time, so please ensure that you are using the correct class.
Usage
Creating Validator instance
JsonNodeFactory factory = new JakartaJsonNode.Factory();
Validator validator = new ValidatorFactory()
.withJsonNodeFactory(factory)
.createValidator();
Using custom JsonParserFactory
JsonParserFactory jsonParserFactory = Json.createParserFactory(Map.of());
JsonNodeFactory factory = new JakartaJsonNode.Factory(jsonParserFactory);
Validator validator = new ValidatorFactory()
.withJsonNodeFactory(factory)
.createValidator();
Converting String to JsonNode
JsonNodeFactory factory = new JakartaJsonNode.Factory();
JsonNode jsonNode = factory.create("{}");
Converting provider node to JsonNode
try (JsonReader reader = Json.createReader(new StringReader("{}"))) {
jakarta.json.JsonValue providerNode = reader.readValue();
JsonNodeFactory factory = new JakartaJsonNode.Factory();
JsonNode jsonNode = factory.wrap(providerNode);
}
Using Validator with provider nodes
jakarta.json.JsonValue providerSchemaNode, providerInstanceNode;
try (JsonReader reader = Json.createReader(new StringReader("{}"))) {
providerSchemaNode = reader.readValue();
}
try (JsonReader reader = Json.createReader(new StringReader("true"))) {
providerInstanceNode = reader.readValue();
}
URI schemaUri = validator.registerSchema(providerSchemaNode);
Validator.Result result = validator.validate(schemaUri, providerInstanceNode);
04 August 2025