我使用RESTEasy使用JSON序列化实现REST服务 . 目前,日期自1970年以来被序列化为毫秒 . 为了提高兼容性,我想将我的日期变为两种格式之一;毫秒时区偏移或ISO 8061 .
似乎RESTEasy曾经使用Jettison进行JSON序列化,但是从我一直在阅读的内容中他们已经切换到 Jackson ......所有这一切都让google搜索得到了很好的帮助 .
据我所知,我需要实现一个ContextResolver:
public class JacksonConfig impelments ContextResolver<ObjectMapper>
{
private final OBjectMapper objectMapper;
public JacksonConfig() throws Exception
{
objectMapper = new ObjectMapper.configure(
SerializationFeature.WRITE_DATE_AS_TIMESTAMPS, false);
}
@Override
public ObjectMapper getContext(Class<?> arg0)
{
return objectMapper;
}
}
我无法找到的是,我该怎么做?我把它放在哪里?
所以更大的问题是,我是朝着正确的方向前进,我的假设是否正确?
3 回答
您需要使用Resteasy注册
ContextResolver
实施 . 您可以通过与@Provider
注释来注释类和允许RestEasy的在启动过程中会自动扫描,在web.xml中注册,或在扩展javax.ws.rs.core.Application
(如果这是你如何自举RestEasy的)一类注册它做到这一点 .通过注释注册
验证是否在web.xml文件中启用了类路径扫描,如下所示:
NOTE: 如果要在JBoss 7中部署它,请不要设置
resteasy.scan
context参数,因为默认情况下它已启用 .通过web.xml注册
将以下上下文参数添加到
web.xml
文件中 . 参数的值应该是ContextResolver
的完全限定类名 .通过应用程序注册
如果您使用Application类来配置Resteasy,您可以将您的提供程序添加到服务和提供程序集中以向Resteasy注册,如下所示:
More on standalone configuration HERE
使用JSR310(新api日期) - LocalDate,LocalDateTime,LocalTime
添加依赖:
并创建一个注册模块的提供程序:
只需注释你的字段(注意字符串文字可以从常量中外化/引用):