Skip to content

Latest commit

 

History

History
78 lines (53 loc) · 2.53 KB

README.md

File metadata and controls

78 lines (53 loc) · 2.53 KB

jackson-jsonb-provider

A Jackson2 based provider based for Json binding API (JSR 367).

This is an alternative to the reference implementation (Yasson) which is is not yet available on Maven central.

Using this provider allows you write code against the standardize Json-binding API while using a proven and reliable JSON binding implementation (Jackson). This decouples your code from a specific implementation and allows to switch implementations more easily (theoretically).

Apart from that, there are no advantages over using Jackson directly, actually you can't access all of the features provided by Jackson through the binding API.

Usage

Dependencies

adding this to your project

<dependency>
    <groupId>io.devcon5</groupId>
    <artifactId>jackson-jsonb-provider</artifactId>
    <version>1.0</version>
</dependency>

Note that the javax.json-api and javax.json.bind-api are not provided by this provider and must be present in the classpath. You may add both dependencies using

<dependency>
    <groupId>javax.json</groupId>
    <artifactId>javax.json-api</artifactId>
    <version>1.0</version>
</dependency>
<dependency>
    <groupId>javax.json.bind</groupId>
    <artifactId>javax.json.bind-api</artifactId>
    <version>1.0.0-M1</version>
</dependency>

Code Examples

To create a Jsonb instance for serializing/deserialing your objects to and from Json:

JsonbBuilder builder = JsonbBuilder.create()
Jsonb jsonb = builder.build();

To serisalize your object to json

MyObject obj = ...;
String json = jsonb.toJson(obj);

To deserialize json to object

MyObject obj2 = jsonb.fromJson(json, MyObject.class);

To deserialize a json array to a list, you may use the Types utility class

List<MyObject> list = jsonb.fromJson(json, Types.ofList(MyObject.class));

or

MyContainer<MyObject> list = jsonb.fromJson(json, Types.of(MyContainer.class, MyObject.class));

Configuration

This provider can be configured to a small extend:

  • including null properties in serialization (default: off)

      JsonbConfig config = new JsonbConfig().withNullValues(true);
      builder.withConfig(config);
      
      Jsonb jsonb = builder.build();
    
  • including empty properties (i.e. Collections or arrays) in serialization (default: off)

      JsonbConfig config = new JsonbConfig().setProperty(JacksonJsonbBuilder.INCLUDE_EMPTY_VALUES, true);
      builder.withConfig(config);
      
      Jsonb jsonb = builder.build();