JAX-RS改变了json序列化器

时间:2014-12-17 14:44:35

标签: java json java-ee timestamp jax-rs

我想将我的序列化程序更改为jackson,所以我可以更改时间戳格式,我试过这样:

@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JacksonConfig
        implements ContextResolver<ObjectMapper> {

    private final ObjectMapper objectMapper;

    public JacksonConfig() {
        objectMapper = new ObjectMapper();
        objectMapper.setDateFormat(new ISO8601DateFormat());
        objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,
                false);
    }

    @Override
    public ObjectMapper getContext(Class<?> objectType) {
        return objectMapper;
    }
}

并在ApplicationConfig中:

    resources.add(com.rfid.server.helpers.JacksonConfig.class);

它无法正常工作,我仍然将时间戳格式化为: 2014-12-12T17:52:33.35031 + 02:00“

我尝试调试JacksonConfig,断点来到构造函数,但不是getContext方法

2 个答案:

答案 0 :(得分:0)

根据ISO8601DateFormatISO8601 utility class的源代码,杰克逊用来操纵ISO8601格式的日期,您看到的结果就是预期结果。

如果您想要新的日期格式,您应该执行以下操作:

objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS"));

答案 1 :(得分:0)

@aribeiro评论似乎没问题。您只需根据您的要求更改数据格式。

确保项目中具有以下依赖关系:

<dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-jaxrs</artifactId>
  <version>1.9.13</version>
</dependency>