ObjectMapper处理is前缀布尔字段异常:重启后先失败后自动恢复
问题:Jackson映射is前缀布尔字段时,服务重启初期报错后自动恢复的原因分析
我在API请求体中定义了一个名为isSafe的布尔字段,使用Jackson的ObjectMapper将请求体映射到POJO类。当发送包含safe字段的请求时,服务重启或部署初期会抛出Unrecognized field "safe"的错误,但等待1-2小时后,云环境中的多个Pod会逐个开始返回成功响应,最终所有请求都能被正常处理。
我了解Jackson对is前缀的布尔字段存在命名规则冲突,但这种随时间推移自动恢复正常的现象非常怪异,想弄清楚:为什么服务重启初期Mapper会报错,后续传入safe字段却不再报错?
相关代码片段
POJO类字段(使用Lombok @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注解,可正常忽略safe字段,不会出现报错 - 不添加该注解时,就会出现“初期报错、后期自动恢复”的异常现象
内容的提问来源于stack exchange,提问作者Amit Kumar
相关产品推荐
相关产品推荐

