有时在Spring MVC中返回JSON格式的response的时候会使用@ResponseBody
注解,不过在处理java8中时间的时候会很麻烦,一般我们使用的HTTPMessageConverter是MappingJackson2HttpMessageConverter
,它默认返回的时间格式是这种:
1 "startDate" : { 2 "year" : 2010, 3 "month" : "JANUARY", 4 "dayOfMonth" : 1, 5 "dayOfWeek" : "FRIDAY", 6 "dayOfYear" : 1, 7 "monthValue" : 1, 8 "hour" : 2, 9 "minute" : 2, 10 "second" : 0, 11 "nano" : 0, 12 "chronology" : { 13 "id" : "ISO", 14 "calendarType" : "iso8601" 15 } 16 }
但是我们不会返回这种给前端使用,针对LocalDate想要返回的格式是2016-11-26,而LocalDateTime想要返回的格式是
2016-11-26
21:04:34
这样的数据。通过项目研究并查阅相关资料,这里介绍下个人研究中实现的两种方式。
解决方法一:
若是maven项目,在pom中引入下面的jar包:
1 <dependency> 2 <groupId>com.fasterxml.jackson.datatype</groupId> 3 <artifactId>jackson-datatype-jsr310</artifactId> 4 <version>2.8.5</version> 5 </dependency>
然后在你想要JSON化的POJO字段的get函数上加上一个@JsonSerializer
注解,如下
1 import com.fasterxml.jackson.annotation.JsonFormat; 2 3 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") 4 public LocalDateTime get