2016-02-29 15 views
1

我使用泽西2与杰克逊功能和JodaTime日期时间。所以它适用于我不需要HH:mm:ss的日期,但现在我做了,而且我在服务器上收到的时间总是错误的。泽西2与杰克逊1功能和乔达日期时间不正确的JSON格式

通过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())); 

但这didnt解决我的问题。 JSON输出是一样的。现在我必须问,如何解决这个日期问题?

谢谢

+0

你为什么要_ENABLE “WRITE_DATE_AS_TIMESTAMPS” _?你认为这意味着什么?你不觉得你应该**吗?默认值为true –

+0

我想我很想读它。你有什么想法可以让杰克逊发送正确的日期格式吗? –

回答

2

你应该使用乔达模块:

mapper.registerModule(new JodaModule()); 

这里maven的依赖性:

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