带有 Jackson1 特征和 Joda DateTime 的 Jersey 2 格式不正确 json

Jersey 2 with Jackson1 Feature and Joda DateTime unproper json format

我将 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 输出是相同的。现在我必须问,如何解决这个日期问题?

谢谢

你应该使用 joda 模块:

mapper.registerModule(new JodaModule());

这里是 Maven 依赖项:

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