jackson @ResponseBody 处理日期类型的字段
前言:以前只知道一种方式(@JsonFormat)来处理日期格式问题,今天才发现还有两种方式,并且可以全局设置格式,这里记录一下。
首先,pom.xml 中需要先引入如下 jackson 的依赖:
<!--支持@ResponseBody 返回json--> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.5</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.5</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.5</version> </dependency>
下面则是遇到日期类型(java.util.Date)类型时做日期格式转换:
方式一、@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
在实体类上的字段上加这个注解即可。
比较方便,也比较独立,不过每个 date 类型的字段都要加,也挺繁琐的。
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateTime;
方式二、spring-mvc.xml 中全局设置日期格式(使用内置的日期格式化工具),并且可以同时使用 @JsonFormat 来设置特定的日期格式,@JsonFormat 优先级高于 spring-mvc.xml 中的设置
spring-mvc.xml 中的配置:
<mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <!-- 将Jackson2HttpMessageConverter的默认格式化输出设为true --> <!--支持@ResponseBody 返回json--> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="prettyPrint" value="true"/> <!-- 兼容ie --> <property name="supportedMediaTypes"> <list> <value>application/json</value> <value>text/json</value> </list> </property> <!--是全局设置json响应的日期格式,但此方法可以和@JsonFormat共存,也就是说可以全局设置一个格式,特定的需求可以使用注解设置。--> <property name="objectMapper"> <bean class="com.fasterxml.jackson.databind.ObjectMapper"> <property name="dateFormat"> <bean class="java.text.SimpleDateFormat"> <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" /> </bean> </property> </bean> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
参考 blog:https://www.cnblogs.com/woshimrf/p/5189435.html