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

前端 未结 8 1130
花落未央
花落未央 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

    Below code worked for me - JAX-RS 1.1, Jersy 1.8

    import java.text.SimpleDateFormat;
    
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.ext.Provider;
    
    import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;
    import org.codehaus.jackson.map.DeserializationConfig;
    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.map.SerializationConfig;
    import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
    
    
    @Provider
    @Produces(MediaType.APPLICATION_JSON)
    public class JsonProvider extends JacksonJaxbJsonProvider {
      private static final ObjectMapper objectMapper = new ObjectMapper();
      static {
        // allow only non-null fields to be serialized
        objectMapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL);
    
        SerializationConfig serConfig = objectMapper.getSerializationConfig();
        serConfig.setDateFormat(new SimpleDateFormat());
        DeserializationConfig deserializationConfig = objectMapper.getDeserializationConfig();
        deserializationConfig.setDateFormat(new SimpleDateFormat());
        objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
    
      }
    
      public JsonProvider() {
        super.setMapper(objectMapper);
      }
    }
    

提交回复
热议问题