我在 Spring Boot 应用程序中格式化 Java 8 LocalDateTime 时遇到一个小问题。对于“正常”日期,我没有问题,但 LocalDateTime 字段会转换为以下内容:
"startDate" : {
"year" : 2010,
"month" : "JANUARY",
"dayOfMonth" : 1,
"dayOfWeek" : "FRIDAY",
"dayOfYear" : 1,
"monthValue" : 1,
"hour" : 2,
"minute" : 2,
"second" : 0,
"nano" : 0,
"chronology" : {
"id" : "ISO",
"calendarType" : "iso8601"
}
}
虽然我想将其转换为类似的东西:
"startDate": "2015-01-01"
我的代码如下所示:
@JsonFormat(pattern="yyyy-MM-dd")
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
public LocalDateTime getStartDate() {
return startDate;
}
但上述任何一个注释都不起作用,日期的格式一直像上面一样。欢迎提出建议!
update:Spring Boot 2.x 不再需要此配置。我写过这里有更新的答案 https://jworks.io/formatting-a-java-8-localdatetime-in-json-with-spring-boot/.
(这是 Spring Boot 2.x 之前的做法,对于使用旧版本 Spring Boot 的人来说可能有用)
我终于找到了here http://blog.chris-ritchie.com/2014/09/java-8-localdate-with-jackson-serialize.html怎么做。为了解决这个问题,我需要另一个依赖项:
compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.4.0")
通过包含此依赖项,Spring 将自动为其注册一个转换器,如下所述here http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.html。之后,您需要将以下内容添加到application.properties:
spring.jackson.serialization.write_dates_as_timestamps=false
这将确保使用正确的转换器,并且日期将以以下格式打印2016-03-16T13:56:39.492
仅当您想要更改日期格式时才需要注释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)