带有 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>
我将 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>