JSON-B is a standard binding layer for converting Java objects to/from JSON messages. It defines a default mapping algorithm for converting existing Java classes to JSON, while enabling developers to customize the mapping process through the use of Java annotations.
<!-- https://mvnrepository.com/artifact/jakarta.json.bind/jakarta.json.bind-api --> <dependency> <groupId>jakarta.json.bind</groupId> <artifactId>jakarta.json.bind-api</artifactId> <version>3.0.0</version> </dependency>
Suppose we have the following Java object, which we want to represent with JSON data:
public class User { public long id; public String name; public int age; }
Using the default mapping, this class can be serialized (as-is) to a JSON string:
Jsonb jsonb = JsonbBuilder.create(); User bob = new User(); bob.id = 1234; bob.name = "Bob"; bob.age = 42; String bobJson = jsonb.toJson(bob); System.out.println(bobJson); // {"id":1234,"name":"Bob","age":42}
Likewise, JSON data can be deserialized back into Java objects:
Jsonb jsonb = JsonbBuilder.create(); String aliceJson = "{\"id\":5678,\"name\":\"Alice\",\"age\":42}"; User alice = jsonb.fromJson(aliceJson, User.class);
The JSON-B TCK tests are produced as a Maven artifact where the tests use Arquillian + JUnit. To run the TCK tests using your implementation, include the TCK module and apply the appropriate Arquillian container. See the Eclipse Yasson repository for an example of this.