Jersey + Jackson JSON date format serialization - how to change the format or use custom JacksonJsonProvider

前端 未结 8 1125
花落未央
花落未央 2020-11-30 00:54

I am using Jersey + Jackson to provide REST JSON services layer for my application. The problem I have is that the default Date serialization format looks like that:

8条回答
  •  既然无缘
    2020-11-30 00:58

    If you choose to work with Joda DateTime objects on your server and want to serialize to ISO8601 you could use Jackson's JodaModule. You can register a Jersey Provider as follows:

    import javax.ws.rs.ext.ContextResolver;
    import javax.ws.rs.ext.Provider;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.SerializationFeature;
    import com.fasterxml.jackson.datatype.joda.JodaModule;
    
    @Provider
    public class MyObjectMapperProvider implements ContextResolver {
    
      final ObjectMapper objectMapper;
    
      public MyObjectMapperProvider() {
        objectMapper = new ObjectMapper();
        /* Register JodaModule to handle Joda DateTime Objects. */
        objectMapper.registerModule(new JodaModule());
        /* We want dates to be treated as ISO8601 not timestamps. */
        objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
      }
    
      @Override
      public ObjectMapper getContext(Class arg0) {
        return objectMapper;
      }
    }
    

    More information available on Jersey's website.

提交回复
热议问题