相关疑难解决方法(0)

杰克逊JSR310中缺少ZonedDateTimeDeserializer

我正在解析ZonedDateTime这样的用法:

 @JsonSerialize(using = ZonedDateTimeSerializer.class)
 private ZonedDateTime expirationDateTime;
Run Code Online (Sandbox Code Playgroud)

我需要能够正确反序列化这个日期。但是,杰克逊没有为此提供反序列化器:

com.fasterxml.jackson.datatype.jsr310.deser
Run Code Online (Sandbox Code Playgroud)

有什么原因会丢失它吗?最常见的解决方法是什么?

更新:这是我的情况:

我这样创建ZonedDateTime

ZonedDateTime.of(2017, 1, 1, 1, 1, 1, 1, ZoneOffset.UTC)
Run Code Online (Sandbox Code Playgroud)

然后我序列化包含日期的对象,如下所示:

public static String toJSON(Object o) {
    ObjectMapper objectMapper = new ObjectMapper();
    StringWriter sWriter = new StringWriter();
    try {
        JsonGenerator jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(sWriter);
        objectMapper.writeValue(jsonGenerator, o);
        return sWriter.toString();
    } catch (IOException e) {
        throw new IllegalStateException(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试将其发送到Spring MVC Controller时:

    mockMvc.perform(post("/endpoint/")
            .content(toJSON(myObject))
            .contentType(APPLICATION_JSON))
            .andExpect(status().isOk());
Run Code Online (Sandbox Code Playgroud)

控制器内部的日期对象不同。

之前: 2017-01-01T01:01:01.000000001Z

后: 2017-01-01T01:01:01.000000001Z[UTC]

java jaxb date-parsing jackson zoneddatetime

5
推荐指数
1
解决办法
1864
查看次数

标签 统计

date-parsing ×1

jackson ×1

java ×1

jaxb ×1

zoneddatetime ×1