You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 + "]";
    }
}

修改后预期返回结果

  1. /filtering端点:只会返回field1和field3
{
  "field1": "value1",
  "field3": "value3"
}
  1. /filtering-list端点:只会返回field2
[
  {
    "field2": "value2"
  },
  {
    "field2": "value5"
  }
]

额外检查点

  • 确认Spring Boot 3.1.1自带的Jackson版本(2.15.x)与代码兼容,你的依赖配置没问题
  • 确保没有其他全局Jackson序列化配置(比如自定义ObjectMapper)覆盖了过滤器规则
  • 重启应用,避免devtools热加载可能导致的缓存问题

内容的提问来源于stack exchange,提问作者Ronit Pandey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 02:53:10