最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java8中對(duì)于LocalDateTime的序列化和反序列化問(wèn)題

 更新時(shí)間:2023年06月01日 14:52:51   作者:劉元濤  
這篇文章主要介紹了Java8中對(duì)于LocalDateTime的序列化和反序列化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java8對(duì)于LocalDateTime的序列化和反序列化

這里以jackjson為例

配置反序列化工具

/**
 * 時(shí)間戳反序列化時(shí)間
 *
 * @author liuyuantao
 */
public class Str2LocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
    private static final String STANDARD_PATTERN = "yyyy-MM-dd HH:mm:ss";
    @Override
    public LocalDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
        DateTimeFormatter formatterDateTime = DateTimeFormatter.ofPattern(STANDARD_PATTERN);
        String timeStr = jsonParser.getValueAsString();
        return LocalDateTime.parse(timeStr, formatterDateTime);
    }
}

解決1:

配置全局日期格式化

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
? ? @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")
? ? private String pattern;
? ? @Bean
? ? public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
? ? ? ? return builder -> {
? ? ? ? ? ? DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
? ? ? ? ? ? //返回時(shí)間數(shù)據(jù)序列化
? ? ? ? ? ? builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(formatter));
? ? ? ? ? ? //接收時(shí)間數(shù)據(jù)反序列化
? ? ? ? ? ? builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(formatter));
? ? ? ? };
? ? }
}

解決2:

在LocalDateTime 實(shí)體類(lèi)使用注解

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime issueDate;

springboot添加LocalDateTime等java8時(shí)間類(lèi)序列化和反序列化的支持

由于項(xiàng)目將原有的  Date類(lèi)型的字段改造為 LocalDate,LocalDateTime,LocalTime 類(lèi)型, 發(fā)現(xiàn)  spring  對(duì)項(xiàng)目的時(shí)間格式無(wú)法自動(dòng)轉(zhuǎn)換,故需手動(dòng)配置下。

在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>

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

配置如下:

@Configuration
public class JacksonConfig {
? ? @Bean
? ? public 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 {
? ? /** 默認(rèn)日期時(shí)間格式 */
? ? public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
? ? /** 默認(rèn)日期格式 */
? ? public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
? ? /** 默認(rèn)時(shí)間格式 */
? ? public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
}

然后只需要在實(shí)體類(lèi)中對(duì)應(yīng)的時(shí)間類(lèi)型上使用  @DateTimeFormat  和  @JsonFormat  即可。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • linux配置jdk環(huán)境變量簡(jiǎn)單教程

    linux配置jdk環(huán)境變量簡(jiǎn)單教程

    這篇文章主要為大家詳細(xì)介紹了linux配置jdk環(huán)境變量簡(jiǎn)單教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 詳解基于IDEA2020.1的JAVA代碼提示插件開(kāi)發(fā)例子

    詳解基于IDEA2020.1的JAVA代碼提示插件開(kāi)發(fā)例子

    這篇文章主要介紹了詳解基于IDEA2020.1的JAVA代碼提示插件開(kāi)發(fā)例子,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出)

    SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出)

    這篇文章主要介紹了SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java ArrayList如何實(shí)現(xiàn)生成不重復(fù)隨機(jī)數(shù)

    Java ArrayList如何實(shí)現(xiàn)生成不重復(fù)隨機(jī)數(shù)

    這篇文章主要介紹了Java ArrayList如何實(shí)現(xiàn)生成不重復(fù)隨機(jī)數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Quarkus云原生開(kāi)篇java框架簡(jiǎn)介

    Quarkus云原生開(kāi)篇java框架簡(jiǎn)介

    Quarkus?是小紅帽開(kāi)源的專門(mén)針對(duì)云容器環(huán)境優(yōu)化的云原生java框架,博主接下來(lái)的項(xiàng)目估計(jì)都會(huì)使用這個(gè)框架來(lái)開(kāi)發(fā),相關(guān)的問(wèn)題都會(huì)記錄在這個(gè)系列,本文是個(gè)開(kāi)篇
    2022-02-02
  • java 交換兩個(gè)數(shù)據(jù)的方法實(shí)例詳解

    java 交換兩個(gè)數(shù)據(jù)的方法實(shí)例詳解

    這篇文章主要介紹了java 交換兩個(gè)數(shù)據(jù)的方法實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Spring Security實(shí)現(xiàn)禁止用戶重復(fù)登陸的配置原理

    Spring Security實(shí)現(xiàn)禁止用戶重復(fù)登陸的配置原理

    這篇文章主要介紹了Spring Security實(shí)現(xiàn)禁止用戶重復(fù)登陸的配置原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java中comparator接口和Comparable接口的比較解析

    Java中comparator接口和Comparable接口的比較解析

    這篇文章主要介紹了Java中comparator接口和Comparable接口的比較解析,Java提供了一個(gè)用于比較的接口Comparator和Comparable接口,提供了一個(gè)比較的方法,所有實(shí)現(xiàn)該接口的類(lèi),都動(dòng)態(tài)的實(shí)現(xiàn)了該比較方法,需要的朋友可以參考下
    2023-08-08
  • Spring中的攔截器HandlerInterceptor詳細(xì)解析

    Spring中的攔截器HandlerInterceptor詳細(xì)解析

    這篇文章主要介紹了Spring中的攔截器HandlerInterceptor詳細(xì)解析,HandlerInterceptor 是 Spring 框架提供的一個(gè)攔截器接口,用于在請(qǐng)求處理過(guò)程中攔截和處理請(qǐng)求,需要的朋友可以參考下
    2024-01-01
  • 基于線程的wait和notify使用,生產(chǎn)消費(fèi)案例

    基于線程的wait和notify使用,生產(chǎn)消費(fèi)案例

    這篇文章主要介紹了基于線程的wait和notify使用,生產(chǎn)消費(fèi)案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論

红安县| 大港区| 嵊州市| 天柱县| 玉树县| 大英县| 西畴县| 德庆县| 仁寿县| 谢通门县| 磐安县| 建平县| 承德县| 岱山县| 临西县| 轮台县| 昂仁县| 隆回县| 青海省| 宁化县| 大荔县| 临泉县| 龙陵县| 奈曼旗| 琼海市| 和田县| 古田县| 天全县| 盐池县| 额尔古纳市| 通江县| 财经| 利辛县| 博罗县| 太白县| 马边| 永安市| 赤壁市| 什邡市| 台北市| 南皮县|