具有Jackson1功能的泽西2和Joda DateTime不合适的json格式

时间:2016-02-29 17:38:09

标签: jersey-2.0 jersey-client

我使用Jersey 2和Jackson Feature以及JodaTime DateTime。所以它适用于日期,我不需要HH:mm:ss,但现在我这样做,而且我在服务器上收到的时间总是错误的。

通过LoggingFilter调试后,我发现日期是这样编写的:

{"id":1,"priority":"NORMAL","start":1456747200000,"end":1456527600000,"conclusion":null}

所以,在搜索了我之后,我看到一个解决方案,说启用“WRITE_DATE_AS_TIMESTAMPS”。这就是我做到的:

@Provider
public class JerseyObjectMapperProvider implements
        ContextResolver<ObjectMapper> {

    final ObjectMapper defaultObjectMapper;

    public JerseyObjectMapperProvider() {
        defaultObjectMapper = createDefaultMapper();
    }

    @Override
    public ObjectMapper getContext(Class<?> type) {
        return defaultObjectMapper;
    }

    private static ObjectMapper createDefaultMapper() {
        final ObjectMapper result = new ObjectMapper();
        result.configure(Feature.WRITE_DATES_AS_TIMESTAMPS, true);

        return result;
    }

}

注册:

client = ClientBuilder.newClient(new ClientConfig()
                .register(new JerseyObjectMapperProvider())
                .register(new Jackson1Feature())
                .register(new MultiPartFeature()));

但这并没有解决我的问题。 JSON输出是相同的。现在我必须问,如何解决这个日期问题?

谢谢

1 个答案:

答案 0 :(得分:2)

你应该使用joda模块:

mapper.registerModule(new JodaModule());

这里的maven依赖:

<dependency> 
  <groupId>com.fasterxml.jackson.datatype</groupId>
  <artifactId>jackson-datatype-joda</artifactId>
  <version>2.4.0</version>
</dependency>