原理:
從新定義定義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的版本緣由。
複製代碼