【发布时间】:2020-08-14 21:32:01
【问题描述】:
当我将代码从 Java 8 和 Sprint Boot 1.X 迁移到 11 和 2.X 时,我遇到了一个奇怪的问题。之前,我发现 Jackson 正在将 private boolean isAvailable 序列化为 available: false 和 isAvailable: false。为了增加更多的混乱,龙目岛一直在路上,所以我看不到吸气剂,如果这会导致冲突。下面是Java类代码:
@Data
public class Availability{
@JsonProperty("isAvailable")
private boolean isAvailable;
}
Jackson 对象映射器生成的 JSON 是:
"Availability" : [{
"isAvailable" : false,
"available" : false }]
这是 Jackson 2.8。现在有了 Jackson 2.10,我只得到 isAvailable: false 作为 ObjectMapper 的 JSON 输出。
"Availability" : [{
"isAvailable" : false }]
对我来说,它应该只匹配 Java 变量名是有道理的,但遗憾的是合同有两个版本,我不想更改合同。有些使用的是,有些不是。我知道自定义序列化程序是可能的,但不确定如何执行或是否有必要。
【问题讨论】: