Java JAX-RS更改json序列化程序

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() {

我想将我的序列化程序更改为jackson,以便更改时间戳格式,我尝试如下:

@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>