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

前端 未结 8 1160
花落未央
花落未央 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 01:21

    To configure your own ObjectMapper, you need to inject your own class that implements ContextResolver

    Exactly how to get jersey to pick this up will kind of depend on your IOC (spring, guice). I use spring, and my class looks something like this:

    import javax.ws.rs.ext.ContextResolver;
    import javax.ws.rs.ext.Provider;
    
    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.map.SerializationConfig.Feature;
    import org.codehaus.jackson.map.deser.CustomDeserializerFactory;
    import org.codehaus.jackson.map.deser.StdDeserializerProvider;
    import org.codehaus.jackson.map.ser.CustomSerializerFactory;
    import org.springframework.stereotype.Component;
    
    // tell spring to look for this.
    @Component
    // tell spring it's a provider (type is determined by the implements)
    @Provider
    public class ObjectMapperProvider implements ContextResolver {
        @Override
        public ObjectMapper getContext(Class type) {
            // create the objectMapper.
            ObjectMapper objectMapper = new ObjectMapper();
            // configure the object mapper here, eg.
               objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
            return objectMapper;
        }
    }
    

提交回复
热议问题