【SpringBoot】@JsonFormat注解使用方式-转换Date

一般我们在开发中都会涉及到日期的转换问题,很头疼所以,@JsonFormat注解,可以很好的帮我们自动化的转换过来,非常方便。

使用依赖

pom文件需要添加下面配置

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.6</version>
</dependency>

使用方式

单纯的日志转换方式

/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;

/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;

带时区转换方式(用这个):
因为jackson在序列化时间时是按照国际标准时间GMT进行格式化的,而在国内默认时区使用的是CST时区,两者相差8小时,因为我们是东八区(北京时间),所以我们在格式化的时候要指定时区

/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private Date createTime;

/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
private Date updateTime;

其他实现方式

可以自定义转换类


import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author cf
 * @projectName 
 * @date 2023/4/11下午 3:09
 */
public class JsonDateSerializer extends JsonSerializer<Date> {
    
    
    private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override
    public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
            throws IOException, JsonProcessingException {
    
    
        String value = "";
        if (null != date) {
    
    
            value = dateFormat.format(date);
        }
        gen.writeString(value);
    }
}

引用一下就好了

    @JsonSerialize(using = JsonDateSerializer.class)
    private Date updateTime;

猜你喜欢

转载自blog.csdn.net/daohangtaiqian/article/details/130083453