簡體   English   中英

Spring 引導:java.time.Duration 的默認序列化從字符串更改為數字

[英]Spring Boot: Default serialization for java.time.Duration changed from String to Number

我們最近從 Spring Boot 2.1.9 升級到 2.2.1,這導致我們的測試失敗。 調查導致java.time.Duration類型現在默認序列化不同。 我們現在得到的不是 JSON 消息中的字符串"PT15M" ,而是"900.0" POJO 定義看起來像這樣

@JsonProperty(required = true, value = "duration")
@NotNull
private final Duration duration;

現在的問題是,是否有一些配置屬性可以用來獲取“舊”行為。 我知道我們還可以添加注釋

@JsonFormat(shape = JsonFormat.Shape.STRING)

但我更喜歡通過配置來獲得它。

當您將 spring-boot 的版本從 2.1.9 更改為 2.2.1 時,Jackson 的版本也發生了變化。 從 Spring-boot 版本 2.2 起,Jackson 版本更改為 2.10。 作為此 Jackson 版本更改的一部分的更改之一是使用標志SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS來序列化 Duration 時間戳,而不是早期的WRITE_DATES_AS_TIMESTAMPS

通過將以下屬性添加到 application.properties 服務(和序列化功能)將表現得像 2.2 之前

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

Springboot 2.2 變更列表

Jackson 2.10 更改列表

Jackson問題跟蹤器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM