Java JAX-RS更改json序列化程序
我想将我的序列化程序更改为jackson,以便更改时间戳格式,我尝试如下:Java JAX-RS更改json序列化程序,java,json,jakarta-ee,timestamp,jax-rs,Java,Json,Jakarta Ee,Timestamp,Jax Rs,我想将我的序列化程序更改为jackson,以便更改时间戳格式,我尝试如下: @Provider @Produces(MediaType.APPLICATION_JSON) public class JacksonConfig implements ContextResolver<ObjectMapper> { private final ObjectMapper objectMapper; public JacksonConfig() {
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JacksonConfig
implements ContextResolver<ObjectMapper> {
private final ObjectMapper objectMapper;
public JacksonConfig() {
objectMapper = new ObjectMapper();
objectMapper.setDateFormat(new ISO8601DateFormat());
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,
false);
}
@Override
public ObjectMapper getContext(Class<?> objectType) {
return objectMapper;
}
}
它不起作用,我仍然会得到像他的格式一样的时间戳:2014-12-12T17:52:33.35031+02:00“
我试着调试
JacksonConfig
,断点到达构造函数,但不是getContext
方法根据的源代码和,Jackson使用ISO8601格式处理日期,您看到的结果是预期的结果
如果要为日期设置新格式,应执行以下操作:
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS"));
@aribeiro的评论似乎还可以。您只需根据自己的要求更改数据格式 确保项目中具有以下依赖项:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.13</version>
</dependency>
org.codehaus.jackson
杰克逊·贾克斯
1.9.13
我不确定我是否遵循。听起来你希望在ISO8601中返回日期,它正在返回,因为你禁用了将日期写为时间戳。
。这不是你想要返回的吗?我可以想象两个不同的原因。1)你有两个不同的主要版本的Jackson。2)Jackson没有被使用。例如,如果你在glassfi中sh,MOXy是默认提供程序。请参阅
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.9.13</version>
</dependency>