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>2.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.