localdatetime转化为date_为啥你用@JsonFormat注解时,LocalDateTime会反序列化失败?
寫(xiě)在前面
最近,有個(gè)小伙伴問(wèn)我:我在SpringBoot項(xiàng)目中,使用@JsonFormat注解標(biāo)注LocalDateTime類(lèi)型的字段時(shí),LocalDateTime反序列化失敗,這個(gè)我該怎么處理呢?別急,我們一起來(lái)解決這個(gè)問(wèn)題。小伙伴的疑問(wèn)
解答小伙伴的疑問(wèn)
我們可以使用SpringBoot依賴中的@JsonFormat注解,將前端通過(guò)json傳上來(lái)的時(shí)間,通過(guò)@RequestBody自動(dòng)綁定到Bean里的LocalDateTime成員上。具體的綁定注解使用方法如下所示。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")出現(xiàn)問(wèn)題的版本
我使用Spring Boot 2.0.0 時(shí),直接在字段上加上@JsonFormat 注解就可以完成數(shù)據(jù)的綁定。
而在使用Spring Boot 1.5.8時(shí),只在字段上加上@JsonFormat 注解,在數(shù)據(jù)綁定時(shí)無(wú)法將Date類(lèi)型的數(shù)據(jù)自動(dòng)轉(zhuǎn)化為字符串類(lèi)型的數(shù)據(jù)。
解決方法
1.將SpringBoot版本升級(jí)為2.0.0及以上。
2.如果不升級(jí)SpringBoot版本,可以按照下面的方式解決問(wèn)題。
不升級(jí)SpringBoot版本,添加Jackson對(duì)Java Time的支持后,就能解決這個(gè)問(wèn)題。
在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,自動(dòng)掃描新添加的模塊:
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或者只注冊(cè)JavaTimeModule,添加下面的Bean
@Bean public ObjectMapper serializingObjectMapper() {ObjectMapper objectMapper = new ObjectMapper();objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);objectMapper.registerModule(new JavaTimeModule());return objectMapper; }重磅福利
微信搜一搜【冰河技術(shù)】微信公眾號(hào),關(guān)注這個(gè)有深度的程序員,每天閱讀超硬核技術(shù)干貨,公眾號(hào)內(nèi)回復(fù)【PDF】有我準(zhǔn)備的一線大廠面試資料和我原創(chuàng)的超硬核PDF技術(shù)文檔,以及我為大家精心準(zhǔn)備的多套簡(jiǎn)歷模板(不斷更新中),希望大家都能找到心儀的工作,學(xué)習(xí)是一條時(shí)而郁郁寡歡,時(shí)而開(kāi)懷大笑的路,加油。如果你通過(guò)努力成功進(jìn)入到了心儀的公司,一定不要懈怠放松,職場(chǎng)成長(zhǎng)和新技術(shù)學(xué)習(xí)一樣,不進(jìn)則退。如果有幸我們江湖再見(jiàn)!
另外,我開(kāi)源的各個(gè)PDF,后續(xù)我都會(huì)持續(xù)更新和維護(hù),感謝大家長(zhǎng)期以來(lái)對(duì)冰河的支持!!
寫(xiě)在最后
如果你覺(jué)得冰河寫(xiě)的還不錯(cuò),請(qǐng)微信搜索并關(guān)注「 冰河技術(shù) 」微信公眾號(hào),跟冰河學(xué)習(xí)高并發(fā)、分布式、微服務(wù)、大數(shù)據(jù)、互聯(lián)網(wǎng)和云原生技術(shù),「 冰河技術(shù) 」微信公眾號(hào)更新了大量技術(shù)專(zhuān)題,每一篇技術(shù)文章干貨滿滿!不少讀者已經(jīng)通過(guò)閱讀「 冰河技術(shù) 」微信公眾號(hào)文章,吊打面試官,成功跳槽到大廠;也有不少讀者實(shí)現(xiàn)了技術(shù)上的飛躍,成為公司的技術(shù)骨干!如果你也想像他們一樣提升自己的能力,實(shí)現(xiàn)技術(shù)能力的飛躍,進(jìn)大廠,升職加薪,那就關(guān)注「 冰河技術(shù) 」微信公眾號(hào)吧,每天更新超硬核技術(shù)干貨,讓你對(duì)如何提升技術(shù)能力不再迷茫!總結(jié)
以上是生活随笔為你收集整理的localdatetime转化为date_为啥你用@JsonFormat注解时,LocalDateTime会反序列化失败?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: zookeeper安装_Linux下安装
- 下一篇: 架空输电线路运行规程_架空输电线路杆塔金