2

我已经com.fasterxml.jackson.datatype.joda.JodaModule使用以下方法成功地向 Spring 3.2 和 Jackson 2 注册了该模块:

<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

4

1 回答 1

2

由于我有一个ObjectMapper正在设置的自定义实现,因此enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);我忽略了这一点,关闭此功能会产生我所期望的结果。

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

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

于 2013-03-12T07:21:40.697 回答