转载

关于LocalDateTime不返回时间戳问题

1.创建LocalDateTimeSerializer类
    2.重定义mapperObject的Bean.
复制代码

1 创建LocalDateTimeSerializer类:

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.time.LocalDateTime;
import java.time.ZoneOffset;

/**
 * 处理localdatetime 不返回时间戳的问题
 *
 * @author dripy
 * @date 2019/7/23 17:51
 */
public class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
    @Override
    public void serialize(LocalDateTime localDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
        jsonGenerator.writeNumber(localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli());
    }
}
复制代码

2 重定义mapperObject的Bean:

/**
 * 处理localdatetime 不返回时间戳问题
 *
 * @return
 */
@Bean(name = "mapperObject")
public ObjectMapper getObjectMapper() {
    ObjectMapper om = new ObjectMapper();
    JavaTimeModule javaTimeModule = new JavaTimeModule();
    // 注意这里的LocalDateTimeSerializer是上面自己实现的一个。
    javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer());
    javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
    javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
    om.registerModule(javaTimeModule);
    return om;
}
复制代码

补充:

目前没找出是哪里的原因。有空去找。
    之前一直都是返回时间戳的。
    突然发现不返回了。应该是升级了Springboot的版本原因。

复制代码
原文  https://juejin.im/post/5de4b2166fb9a07194761661
正文到此结束
Loading...