在將我的spring-boot-starter-parent版本從2.4.8更新到2.5.4之后,我在嘗試反序列化一個LocalDate時,開始在jackson序列化中出現這個錯誤:
com.fasterxml.jackson.databind.ex.InvalidDefinitionException: Java 8日期/時間型別`java.time.LocalDate`不被default支持:添加模塊"com.s fasterxml.jackson.datatype:jackson-datatype-jsr310"以啟用處理。
據我所知,這種情況不應該發生(在以前的版本中也是如此),因為Spring Boot默認有這些Jackson依賴項(jackson-datatype-jdk8、jackson-datatype-jsr310等)
。我沒有自定義的 Jackson 配置。
在Spring boot的2.5.x版本中,有什么變化嗎?
uj5u.com熱心網友回復:
出現這個問題是因為JSON本身沒有日期格式,所以它將日期表示為String。
日期的字串表示與記憶體中的LocalDate型別的物件不一樣,所以我們需要一個外部反序列化器來從字串中讀取該欄位,以及一個序列化器來將日期呈現為字串格式。
有以下依賴性:-
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<版本>2.11.0</version>
</dependency>
在物體層使用LocalDateDeserializer和JsonFormat注解。
public class EntityWithDate{
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyy")
public LocalDate operationDate。
}
我們也可以使用Jackson的本地支持來序列化和反序列化日期。
uj5u.com熱心網友回復:
這是Spring Boot 2.5.0和InvalidDefinitionException的一個重復。Java 8日期/時間型別`java.time.Instant`不被默認支持
我不認為我有足夠的聲譽來標記它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/308791.html
標籤:
