小编Jon*_*han的帖子

Jackson @JsonFilter在现场或方法级别使用时未获得应用

我使用的是Spring 4.3.3版本和Jackson版本2.8.3.我试图根据在运行时确定的一些自定义逻辑从实体bean中过滤掉特定字段.@JsonFilter似乎是这类功能的理想选择.问题是当我把它放在字段或方法级别时,我的自定义过滤器永远不会被调用.如果我把它放在类级别,它会被调用就好了.我不想在类级别使用它,但从那时起我需要单独维护我想要应用逻辑的硬编码字段名称列表.从Jackson 2.3开始,应该存在将这个注释放在字段级别的能力.

这是最基本的自定义过滤器,没有任何自定义逻辑:

public class MyFilter extends SimpleBeanPropertyFilter {

@Override
protected boolean include(BeanPropertyWriter beanPropertyWriter) {
    return true;
}

@Override
protected boolean include(PropertyWriter propertyWriter) {
    return true;
}
Run Code Online (Sandbox Code Playgroud)

}

然后我有Jackson ObjectMapper配置:

public class MyObjectMapper extends ObjectMapper {

    public MyObjectMapper () {
        SimpleFilterProvider filterProvider = new SimpleFilterProvider();
        filterProvider.addFilter("myFilter", new MyFilter());
        setFilterProvider(filterProvider);
    }
}
Run Code Online (Sandbox Code Playgroud)

最后我有我的实体bean:

@Entity
public class Project implements Serializable {

    private Long id;
    private Long version;
    @JsonFilter("myFilter") private String name;
    @JsonFilter("myFilter") private String description;

    // getters and setters

}
Run Code Online (Sandbox Code Playgroud)

如果我将@JsonFilter注释移动到@Entity所在的类级别,则至少会调用过滤器,但是当它在字段级别时(如此处的示例),它永远不会被调用.

spring jackson

7
推荐指数
1
解决办法
1356
查看次数

标签 统计

jackson ×1

spring ×1