【发布时间】:2020-10-06 14:13:33
【问题描述】:
我一直在努力升级我的一个微服务的 Spring Boot 版本,我偶然发现了一个奇怪的行为。我有这样的课:
public class FilteredData {
private final List<ShipmentData> shipments;
public FilteredData(@JsonProperty("listShipments") List<ShipmentData> shipments) {
this.shipments = shipments;
}
public List<ShipmentData> getShipments() {
return shipments;
}
}
我在进行升级之前的行为是,在反序列化时,名称 listShipments 在 JSON 对象中用于映射到 Java 类的 shipments 属性。但是,在序列化时,它会将shipments 属性写入名称为shipments,而不是listShipments。
问题是现在它在反序列化和序列化时都使用名称listShipments。我不确定这个问题是从什么时候开始发生的,因为我最初的 Spring Boot 版本是 1.5.7,而我正在慢慢升级到 2.3.4。但我相信它在 2.0.0 版之后开始发生。
我不知道这是由于 Spring Boot 的 Jackson 自动配置的一些内部变化,还是实际 Jackson 库的变化引起的,但我很难追踪是什么原因造成的,以及如何解决它。
编辑:我注意到从最新的 Spring Boot 1 版本 (1.5.22) 到 Spring Boot 2.0.0,Jackson 次要版本发生了变化(从 2.8 到 2.9)。这会导致问题吗?
【问题讨论】:
标签: java spring spring-boot jackson