Search code examples
jsonjerseydate-formattinggenson

How do I configure the date formatter through Genson/Jersey?


I'm using Jersey for my RESTful services and Genson to perform my JSON/POJO conversion. There's no setup for Genson, I just drop it into the classpath and it just works, except that it throws an error on date parsing because the format is unexpected.

Now, if I were to do this as a servlet, using Gson, I set the date format on a Gson instance that I maintain. That forces the parse of the POJO to use the correct format. I see that Genson has a similar interface, but I don't know how to get the instance from the Jersey servlet service or maybe the Spring context so that I cat set the format.

So, the short question is: how do I set a date format for Genson when started through Jersey?


Solution

  • To configure Genson instances you can use Genson.Builder class (it is similar to Gson on this point). Then you have to inject it with Jersey.

    @Component
    @Provider
    public class GensonProvider implements ContextResolver<Genson> {
       private final Genson genson = new Genson.Builder().setDateFormat(yourDateFormat).create();
    
        @Override
       public Genson getContext(Class<?> type) {
         return genson;
       }
    }
    

    You might also want to have a look at how Genson is integrated into Jersey here.