Interface JsonbAdapter<Original,Adapted>

Type Parameters:
Original - The type that JSONB doesn't know how to handle
Adapted - The type that JSONB knows how to handle out of the box

Adapter runtime "Original" and "Adapted" generic types are inferred from subclassing information, which is mandatory for adapter to work.

Sample 1:

 
      // Generic information is provided by subclassing.
      class BoxToCrateAdapter implements JsonbAdapter<Box<Integer>, Crate<String>> {...};
      jsonbConfig.withAdapters(new BoxToCrateAdapter());

      // Generic information is provided by subclassing with anonymous class
      jsonbConfig.withAdapters(new JsonbAdapter<Box<Integer>, Crate<String>> {...});
 
 

Sample 2:

 
      BoxToCrateAdapter<T> implements JsonbAdapter<Box<T>, Integer> {...};

      // Bad way: Generic type information is lost due to type erasure
      jsonbConfig.withAdapters(new BoxToCrateAdapter<Integer>());

      // Proper way: Anonymous class holds generic type information
      jsonbConfig.withAdapters(new BoxToCrateAdapter<Integer>(){});
 
 

public interface JsonbAdapter<Original,Adapted>

Allows to define custom mapping for given java type. The target type could be string or some mappable java type.

On serialization "Original" type is converted into "Adapted" type. After that "Adapted" type is serialized to JSON the standard way.

On deserialization it works the reverse way: JSON data are deserialized into "Adapted" type which is converted to "Original" type after that.

Adapters are registered using JsonbConfig.withAdapters(JsonbAdapter[]) method or using JsonbTypeAdapter annotation on class field.

Since:
JSON Binding 1.0
See Also:
  • Method Details

    • adaptToJson

      Adapted adaptToJson(Original obj) throws Exception
      This method is used on serialization only. It contains a conversion logic from type Original to type Adapted. After conversion Adapted type will be mapped to JSON the standard way.
      Parameters:
      obj - Object to convert or null.
      Returns:
      Converted object which will be serialized to JSON or null.
      Throws:
      Exception - if there is an error during the conversion.
    • adaptFromJson

      Original adaptFromJson(Adapted obj) throws Exception
      This method is used on deserialization only. It contains a conversion logic from type Adapted to type Original.
      Parameters:
      obj - Object to convert or null.
      Returns:
      Converted object representing pojo to be set into object graph or null.
      Throws:
      Exception - if there is an error during the conversion.