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

标签 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

最佳答案

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

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

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

关于java - 如何让 Jackson 的 LocalDateSerializer 呈现为 ISO 日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15354429/

相关文章:

java - JPanel 图像背景与其他 JPanel 重叠

java - 如何使用 Spring MVC 返回 XML 文件?

java - spring boot 应用程序中的双日志文件

java - Spring in Action 第 4 章 testTrackCounter 未通过测试

java - @JsonFormat DEFAULT_TIMEZONE 似乎不起作用

java - junit4 中未找到测试

java - 使用 REST 和 Javaconfig 在 Spring Security 中摘要验证

java - 当模式中有相同的表时,如何在运行时动态传递模式名称

java - Jackson - 在运行时解析相同 key 下的不同模型

java - 如何在域 bean 之外实现 Jackson 自定义序列化?