日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring boot添加 LocalDateTime 等 java8 时间类序列化和反序列化的支持

發布時間:2024/4/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring boot添加 LocalDateTime 等 java8 时间类序列化和反序列化的支持 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于項目將原有的??Date類型的字段改造為?LocalDate,LocalDateTime,LocalTime?類型, 發現 ?spring??對項目的時間格式無法自動轉換,故需手動配置下。

在spring boot? 中需在 ?maven?中引入??jsr-310? 的支持

<dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jsr310</artifactId></dependency>

或者直接引用

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-json</artifactId> </dependency>

因為??spring boot? 是使用 ?jackson?作為 ?json?序列化和反序列化工具的,故只需配置 ?jackson?即可。

/*** 發布時間*/@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime updateDate;/*** 創建時間*/@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime createDate;

全局配置

配置如下:

@Configuration public class JacksonConfig {@Beanpublic ObjectMapper objectMapper(){ObjectMapper objectMapper = new ObjectMapper();objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);objectMapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);JavaTimeModule javaTimeModule = new JavaTimeModule();javaTimeModule.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(Constants.DEFAULT_DATE_TIME_FORMAT)));javaTimeModule.addSerializer(LocalDate.class,new LocalDateSerializer(DateTimeFormatter.ofPattern(Constants.DEFAULT_DATE_FORMAT)));javaTimeModule.addSerializer(LocalTime.class,new LocalTimeSerializer(DateTimeFormatter.ofPattern(Constants.DEFAULT_TIME_FORMAT)));javaTimeModule.addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(Constants.DEFAULT_DATE_TIME_FORMAT)));javaTimeModule.addDeserializer(LocalDate.class,new LocalDateDeserializer(DateTimeFormatter.ofPattern(Constants.DEFAULT_DATE_FORMAT)));javaTimeModule.addDeserializer(LocalTime.class,new LocalTimeDeserializer(DateTimeFormatter.ofPattern(Constants.DEFAULT_TIME_FORMAT)));objectMapper.registerModule(javaTimeModule).registerModule(new ParameterNamesModule());return objectMapper;}} public class Constants {/** 默認日期時間格式 */public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";/** 默認日期格式 */public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";/** 默認時間格式 */public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";}

然后只需要在實體類中對應的時間類型上使用??@DateTimeFormat? 和??@JsonFormat? 即可。

單個ObjectMapper

jsonStr = new String(msg);ObjectMapper objectMapper = new ObjectMapper();objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);objectMapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);JavaTimeModule javaTimeModule = new JavaTimeModule();javaTimeModule.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(Constants.DEFAULT_DATE_TIME_FORMAT)));javaTimeModule.addSerializer(LocalDate.class,new LocalDateSerializer(DateTimeFormatter.ofPattern(Constants.DEFAULT_DATE_FORMAT)));javaTimeModule.addSerializer(LocalTime.class,new LocalTimeSerializer(DateTimeFormatter.ofPattern(Constants.DEFAULT_TIME_FORMAT)));javaTimeModule.addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(Constants.DEFAULT_DATE_TIME_FORMAT)));javaTimeModule.addDeserializer(LocalDate.class,new LocalDateDeserializer(DateTimeFormatter.ofPattern(Constants.DEFAULT_DATE_FORMAT)));javaTimeModule.addDeserializer(LocalTime.class,new LocalTimeDeserializer(DateTimeFormatter.ofPattern(Constants.DEFAULT_TIME_FORMAT)));objectMapper.registerModule(javaTimeModule).registerModule(new ParameterNamesModule());ComponentPublishedMessage message = objectMapper.readValue(jsonStr, ComponentPublishedMessage.class);

配置在屬性上

@DateTimeFormat(pattern = "yyyy-MM-dd\'T\'HH:mm:ss.SSS")@JsonDeserialize(using = LocalDateTimeDeserializer.class)@JsonSerialize(using = LocalDateTimeSerializer.class)@JsonFormat(pattern = "yyyy-MM-dd\'T\'HH:mm:ss.SSS")private LocalDateTime createDate;

?

?

總結

以上是生活随笔為你收集整理的spring boot添加 LocalDateTime 等 java8 时间类序列化和反序列化的支持的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。