我正在使用Jersey + Jackson为我的应用程序提供REST JSON服务层.我遇到的问题是默认的日期序列化格式如下所示:
"CreationDate":1292236718456
Run Code Online (Sandbox Code Playgroud)
起初我以为它是一个UNIX时间戳......但它太长了.我的客户端JS库在反序列化这种格式时遇到了问题(它支持一堆不同的日期格式,但我认为不支持这种格式).我想更改格式,以便我的库(例如ISO)可以使用它.我该怎么做...我找到了一段可以帮助的代码,但是......我把它放在哪里因为我不控制杰克逊序列化器实例化(泽西岛)?
objectMapper.configure(
SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
Run Code Online (Sandbox Code Playgroud)
我也发现这个代码用于自定义JacksonJsonProvider- 问题是..如何让我所有的POJO类使用它?
@Provider
public class MessageBodyWriterJSON extends JacksonJsonProvider {
private static final String DF = "yyyy-MM-dd’T'HH:mm:ss.SSSZ";
@Override
public boolean isWriteable(Class arg0, Type arg1, Annotation[] arg2,
MediaType arg3) {
return super.isWriteable(arg0, arg1, arg2,
arg3);
}
@Override
public void writeTo(Object target, Class arg1, Type arg2, Annotation[] arg3,
MediaType arg4, MultivaluedMap arg5, OutputStream outputStream)
throws IOException, WebApplicationException {
SimpleDateFormat sdf=new SimpleDateFormat(DF);
ObjectMapper om = new ObjectMapper();
om.getDeserializationConfig().setDateFormat(sdf);
om.getSerializationConfig().setDateFormat(sdf);
try {
om.writeValue(outputStream, target); …Run Code Online (Sandbox Code Playgroud)