我已使用以下命令成功向 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
?
最佳答案
由于我有一个自定义的ObjectMapper
实现,它设置了enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
,所以我忽略了这一点,关闭此功能会产生我所期望的结果.
不幸的是,默认情况下你不能将 DateTime
和 LocalDateTime
序列化,因为 LocalDateTime
没有 getter,我很惊讶地发现即使该属性存在,DateTimeMidnight
也将呈现为数组而不是毫秒。
正如我在对该问题的评论中所讨论的,通过创建您自己的 JodaModule
实现(而不是覆盖)并替换现有的以及您的覆盖实现,覆盖此行为非常简单。但请注意,您必须具有与原始实现相同的包结构,因为某些类是包私有(private)的 (com.fasterxml.jackson.datatype.joda
)。
关于java - 如何让 Jackson 的 LocalDateSerializer 呈现为 ISO 日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15354429/