Retrofit is pluggable allowing different serialization formats and their libraries to be used for converting Java types to their HTTP representation and parsing HTTP entities back into Java types.
These are called converters, and Retrofit includes a few first-party modules for popular frameworks
Just for fun, I created a Retrofit2 Converter.Factory for JakartaEE Json-B.
Usage
Add the dependencies:
Retrofit2
<dependency>
  <groupId>com.squareup.retrofit2</groupId>
  <artifactId>retrofit</artifactId>
  <version>2.9.0</version>
</dependency>
OkHttp3
<dependency>
  <groupId>com.squareup.okhttp3</groupId>
  <artifactId>okhttp</artifactId>
  <version>3.14.9</version>
</dependency>
JakartaEE Json Binding Reference Implementation
<dependency>
  <groupId>org.eclipse</groupId>
  <artifactId>yasson</artifactId>
  <version>1.0.8</version>
</dependency>
JsonB Retrofit2 Converter
<dependency>
  <groupId>io.github.cchacin</groupId>
  <artifactId>jsonb-retrofit-converter</artifactId>
  <version>1.0.2</version>
</dependency>
Add a converter factory when building your Retrofit instance using thecreate method:
var retrofit = new Retrofit.Builder()
    .baseUrl("https://example.com/")
    .addConverterFactory(JsonbConverterFactory.create())
    .build();
Alternatively, you can pass an instance of javax.json.bind.Jsonb:
var jsonb = JsonbBuilder.create(/* configure your jsonb instance here */ );
var retrofit = new Retrofit.Builder()
    .baseUrl("https://example.com/")
    .addConverterFactory(JsonbConverterFactory.create(jsonb))
    .build();
Now we are able to use JakartaEE JsonB to serialize and deserialize POJOs using Retrofit2
The code is available on Github:
       cchacin
       / 
        jsonb-retrofit-converter
      
        cchacin
       / 
        jsonb-retrofit-converter
      
    
    JakartaEE Json-B Converter for Retrofit2
JakartaEE Json-B Retrofit2 Converter
A Retrofit 2 Converter.Factory for JakartaEE Json-B.
Usage
Add a converter factory when building your Retrofit instance using the
create method:
var retrofit = new Retrofit.Builder()
    .baseUrl("https://example.com/")
    .addConverterFactory(JsonbConverterFactory.create())
    .build();
Alternatively, you can pass an instance of javax.json.bind.Jsonb:
var jsonb = JsonbBuilder.create(/* configure your jsonb instance here */ );
var retrofit = new Retrofit.Builder()
    .baseUrl("https://example.com/")
    .addConverterFactory(JsonbConverterFactory.create(jsonb))
    .build();
Download
Download the latest JAR or grab via Gradle:
implementation 'io.github.cchacin:jsonb-retrofit-converter:1.0.2'
or Maven:
<dependency>
  <groupId>io.github.cchacin</groupId>
  <artifactId>jsonb-retrofit-converter</artifactId>
  <version>1.0.2</version>
</dependency>
Snapshots of the development version are available in Sonatype's snapshots repository.
License
Copyright 
 
              
 
    
Top comments (0)