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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

为啥你用@JsonFormat注解反序列化LocalDateTime总失败?

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为啥你用@JsonFormat注解反序列化LocalDateTime总失败? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方藍色“冰河技術”,關注并選擇“設為星標”

持之以恒,貴在堅持,每天進步一點點!

作者個人研發的在高并發場景下,提供的簡單、穩定、可擴展的延遲消息隊列框架,具有精準的定時任務和延遲隊列處理功能。自開源半年多以來,已成功為十幾家中小型企業提供了精準定時調度方案,經受住了生產環境的考驗。為使更多童鞋受益,現給出開源框架地址:

https://github.com/sunshinelyz/mykit-delay

PS: 歡迎各位Star源碼,也可以pr你牛逼哄哄的代碼。? ? ??

寫在前面

最近,有個小伙伴問我:我在SpringBoot項目中,使用@JsonFormat注解標注LocalDateTime類型的字段時,LocalDateTime反序列化失敗,這個我該怎么處理呢?別急,我們一起來解決這個問題。

小伙伴的疑問

解答小伙伴的疑問

我們可以使用SpringBoot依賴中的@JsonFormat注解,將前端通過json傳上來的時間,通過@RequestBody自動綁定到Bean里的LocalDateTime成員上。具體的綁定注解使用方法如下所示。

@JsonFormat(pattern?=?"yyyy-MM-dd?HH:mm:ss",?locale?=?"zh",?timezone?=?"GMT+8")

出現問題的版本

我使用Spring Boot 2.0.0 時,直接在字段上加上@JsonFormat 注解就可以完成數據的綁定。

而在使用Spring Boot 1.5.8時,只在字段上加上@JsonFormat 注解,在數據綁定時無法將Date類型的數據自動轉化為字符串類型的數據。

解決方法

1.將SpringBoot版本升級為2.0.0及以上。

2.如果不升級SpringBoot版本,可以按照下面的方式解決問題。

不升級SpringBoot版本,添加Jackson對Java Time的支持后,就能解決這個問題。

在pom.xml中添加:

<dependency><groupId>com.fasterxml.jackson.module</groupId><artifactId>jackson-module-parameter-names</artifactId> </dependency> <dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jdk8</artifactId> </dependency> <dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jsr310</artifactId> </dependency>

添加JavaConfig,自動掃描新添加的模塊:

import?org.springframework.context.annotation.Bean; import?org.springframework.context.annotation.Configuration;import?com.fasterxml.jackson.databind.ObjectMapper;@Configuration public?class?JacksonConfig?{@Beanpublic?ObjectMapper?serializingObjectMapper()?{ObjectMapper?objectMapper?=?new?ObjectMapper();objectMapper.findAndRegisterModules();return?objectMapper;} }

或者在application.properties添加如下配置:

spring.jackson.serialization.write-dates-as-timestamps=false

或者只注冊JavaTimeModule,添加下面的Bean

@Bean public?ObjectMapper?serializingObjectMapper()?{ObjectMapper?objectMapper?=?new?ObjectMapper();objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);objectMapper.registerModule(new?JavaTimeModule());return?objectMapper; }

重磅福利

微信搜一搜【冰河技術】微信公眾號,關注這個有深度的程序員,每天閱讀超硬核技術干貨,公眾號內回復【PDF】有我準備的一線大廠面試資料和我原創的超硬核PDF技術文檔,以及我為大家精心準備的多套簡歷模板(不斷更新中),希望大家都能找到心儀的工作,學習是一條時而郁郁寡歡,時而開懷大笑的路,加油。如果你通過努力成功進入到了心儀的公司,一定不要懈怠放松,職場成長和新技術學習一樣,不進則退。如果有幸我們江湖再見!

另外,我開源的各個PDF,后續我都會持續更新和維護,感謝大家長期以來對冰河的支持!!

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

總結

以上是生活随笔為你收集整理的为啥你用@JsonFormat注解反序列化LocalDateTime总失败?的全部內容,希望文章能夠幫你解決所遇到的問題。

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