背景:
今天遇到群友问如何定义全局日期响应格式,于是乎看了各种帖子,最后根据实际试验,总结出如下方法:
方法一(最方便):
#在application.properties文件中配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
定义,全局响应的日期格式后,如果希望单独更改某个VO的日期格式,可以使用注解 @JsonFormat(pattern = "yyyy")
或者@DateTimeFormat(pattern = "yyyy-MM-dd")。
另外,如果配置全局日期格式后,如果希望更改响应字段的名字,不能使用fastJSON的@JSONField注解,原因可以参考 https://blog.csdn.net/u011410529/article/details/67633835 。可以使用@JsonProperty("Date")将字段date改为首字母大写的Date。
public class UserInfo implements Serializable {
private static final long serialVersionUID = -1L;
// @JsonFormat(pattern = "yyyy")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
方法二(消息转换器):
package com.froad.util;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import java.text.SimpleDateFormat;
/**
* FileName: Json2MessageConventerConfig
* DESCRIPTION: 设置全局响应日期格式
*
* @author: SLY
* @create: 2019/4/1
*/
@Configuration
public class Json2MessageConventerConfig {
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
objectMapper.setDateFormat(sdf);
converter.setObjectMapper(objectMapper);
return converter;
}
}
如果希望单独更改某个VO的日期格式,同样可以使用方法一中的方法。