如何让Jackson的LocalDateSerializer呈现为ISO日期?

时间:2013-03-12 06:06:05

标签: java spring jackson

我已使用以下内容成功注册了Spring {3.2和Jackson 2 com.fasterxml.jackson.datatype.joda.JodaModule模块:

<mvc:annotation-driven>
  <mvc:message-converters>
    <bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
      <property name="objectMapper" ref="jacksonObjectMapper" />
    </bean>
  </mvc:message-converters>
</mvc:annotation-driven>
<bean id="jacksonObjectMapper" class="org.mycompany.CustomObjectMapper" />

但结果是LocalDate的序列化是一个包含日期的数组,即今天的日期看起来像[2013,3,12]。如何让它返回2013-03-12

1 个答案:

答案 0 :(得分:2)

由于我的自定义ObjectMapper实施设置为enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);,因此我忽略了这一点,将此功能转移到了我期待的结果。

不幸的是,默认情况下,您不能DateTimeLocalDateTime序列化,因为LocalDateTime没有getter,我很惊讶地看到DateTimeMidnight也会呈现为即使属性存在,也是一个数组而不是毫秒。

正如我对该问题的评论中所讨论的,通过创建自己的JodaModule实现(不覆盖)并替换现有的加上覆盖的实现来覆盖此行为非常简单。但请注意,您必须具有与原始实现相同的包结构,因为某些类是包私有的(com.fasterxml.jackson.datatype.joda)。