当映射“is”前缀的布尔字段时,ObjectMapper 行为异常

问题描述 投票:0回答:1

我在 API 的请求正文中有一个布尔字段,名为“isSafe”。该字段使用 ObjectMapper 映射到我的 Pojo 类。

如果我在请求中发送“安全”,那么它会失败并收到此错误无法识别的字段“安全”。但同样的请求在一段时间后开始被传递。

我的应用程序部署在云上,并且有多个 Pod 正在运行。在应用程序的任何部署/重新启动后,此请求都会失败(这是预期的),但 1-2 小时后,一个接一个的 Pod 开始给出成功响应。最终,所有请求都开始成功。

注意:我知道 Jackson 与“is”前缀名称字段产生的冲突。但就我而言,请求在一段时间后开始成功。这很奇怪。

我的问题是,为什么最初在服务器重新启动后映射器会抛出错误,一段时间后即使我传递“安全”字段也不会抛出错误。

Pojo 类字段(我使用 @Data 作为 getter 和 setter):


private Boolean isSafe;

ObjectMapper bean:

new ObjectMapper()
        .setSerializationInclusion(JsonInclude.Include.NON_NULL)
        .enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES)
        .registerModules(new JavaTimeModule(), new Jdk8Module());

初步分析:如果我在定义此字段的 Pojo 类中添加 @JsonIgnoreProperties,那么它会按预期工作(“安全”字段被忽略)。但如果没有这个,它的行为就会变得很奇怪。

java kubernetes lombok jackson-databind objectmapper
1个回答
0
投票

将 JsonProperty 添加到您的 pojo 以指定 JSON 字符串中映射的名为映射的字段。

class YourPoJo{

   @JsonProperty("isSafe")
   private boolean safe;
}

然后您可以在请求正文中使用

isSafe

© www.soinside.com 2019 - 2024. All rights reserved.