我已使用以下内容成功注册了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
?
答案 0 :(得分:2)
由于我的自定义ObjectMapper
实施设置为enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
,因此我忽略了这一点,将此功能转移到了我期待的结果。
不幸的是,默认情况下,您不能DateTime
和LocalDateTime
序列化,因为LocalDateTime
没有getter,我很惊讶地看到DateTimeMidnight
也会呈现为即使属性存在,也是一个数组而不是毫秒。
正如我对该问题的评论中所讨论的,通过创建自己的JodaModule
实现(不覆盖)并替换现有的加上覆盖的实现来覆盖此行为非常简单。但请注意,您必须具有与原始实现相同的包结构,因为某些类是包私有的(com.fasterxml.jackson.datatype.joda
)。