關於LocalDateTime不返回時間戳問題

原理:

從新定義定義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的版本緣由。

複製代碼
相關文章
相關標籤/搜索