Spring Boot中Jackson动态JSON过滤器失效问题求助
问题诊断与解决方案
核心问题在于@JsonFilter注解的位置错误——你把它标注在了field2字段上,但Jackson动态过滤器要求该注解必须标注在类级别,这样才能让控制器中配置的FilterProvider匹配并应用过滤规则。
修改后的SomeBean代码
package com.ronit.Restfulwebservice.filtering; import com.fasterxml.jackson.annotation.JsonFilter; @JsonFilter("SomeBeanFilter") // 移到类级别 public class SomeBean { private String field1; private String field2; private String field3; public SomeBean(String field1, String field2, String field3) { super(); this.field1 = field1; this.field2 = field2; this.field3 = field3; } public String getField1() { return field1; } public String getField2() { return field2; } public String getField3() { return field3; } @Override public String toString() { return "SomeBean [field1=" + field1 + ", field2=" + field2 + ", field3=" + field3 + "]"; } }
修改后预期返回结果
- /filtering端点:只会返回
field1和field3
{ "field1": "value1", "field3": "value3" }
- /filtering-list端点:只会返回
field2
[ { "field2": "value2" }, { "field2": "value5" } ]
额外检查点
- 确认Spring Boot 3.1.1自带的Jackson版本(2.15.x)与代码兼容,你的依赖配置没问题
- 确保没有其他全局Jackson序列化配置(比如自定义
ObjectMapper)覆盖了过滤器规则 - 重启应用,避免devtools热加载可能导致的缓存问题
内容的提问来源于stack exchange,提问作者Ronit Pandey
相关产品推荐
相关产品推荐

