Search code examples
javajakarta-eejax-rsresteasy

Custom Jackson serializer of resteasy client


Is it possible to register a custom Jackson JSON serializer for the resteasy client?

I've tried to do something like:

ResteasyClient client = new ResteasyClientBuilder()
            .register(new CustomSerializer())
            .build();

But it didn't work. Any ideas?


Solution

  • You can only register JAX-RS components like Providers or Features. You need to register an Provider which carries an ObjectMapper which carries an Module with your serializer registered.

    ResteasyJacksonProvider resteasyJacksonProvider = new ResteasyJacksonProvider();
    ObjectMapper mapper = new ObjectMapper();
    SimpleModule myModule = new SimpleModule("myModule", new Version(1, 0, 0, null));
    myModule.addSerializer(Custom.class, new CustomSerializer());
    mapper.registerModule(myModule);
    resteasyJacksonProvider.setMapper(mapper);
    ResteasyClient client = new ResteasyClientBuilder().register(resteasyJacksonProvider).build();
    

    Note that this example is using the classes from org.codehaus.jackson. The API from com.fasterxml.jackson looks slightly different.