前兩天做項目,后端返回給前端的數據中日期時間格式如下:
並不是我想要的yyyy-MM-dd HH:mm:ss格式的,所以網上搜了一下有一個JSON日期LocalDateTime序列化器(如果是Date類型,有其他方式解決),我們只需要在配置類中加入此配置即可
先導包
<!-- json序列化 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<!--json-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.28</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20170516</version>
</dependency>
配置類
package com.qbb.srb.base.config;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @author QiuQiu&LL (個人博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-04-05 17:39
* @Description:
*/
@Configuration
public class LocalDateTimeSerializerConfig {
@Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")
private String pattern;
public LocalDateTimeSerializer localDateTimeDeserializer() {
return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
}
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeDeserializer());
}
}
測試一下:
可以發現上面的是好使的,但是問題來了,上面配置類形式的相當於全局設置,只要是LocalDateTime都是以這種格式展示了,那我現在想帶點個性化,比如我只要年月日怎么辦:yyyy-MM-dd?好辦
我們只需要在相應的實體類上加入注解即可,例如:
@ApiModelProperty(value = "創建時間")
@JsonFormat(pattern = "yyyy-MM-dd")
// @DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDateTime createTime;
注意:這里的@DateTimeFormat控制的是前端傳遞過來的日期格式數據我們使用什么格式來序列化,而@JsonFormat則是以什么格式序列化傳遞給前端!! 一個對內,一個對外