过滤嵌套对象属性uisng @JsonFilter

时间:2020-08-22 18:22:11

标签: java spring jackson jackson-databind

我经历了很多StackOverflow的问题和github的问题,但是没有得到我的问题的解决方案。 我上课如下:

@JsonFilter("apiFilter")
Class Employee{
    String id,
    String name;
    Address address,
}
@JsonFilter("apiFilter")
Class Address{
    String id,
    String city,
    String state,
    String country,
}   

我想在返回API的响应时使用@JosnFilter过滤Employee的属性及其嵌套对象Address属性,在这里我可以使用下面的代码集过滤Employee的属性

SimpleBeanPropertyFilter propertyFilter = SimpleBeanPropertyFilter.filterOutAllExcept("name", "address");
        
FilterProvider filters = new SimpleFilterProvider().addFilter("apiFilter", propertyFilter).setFailOnUnknownId(false);

但是我还需要使用 dot(。)来过滤嵌套对象的属性,例如"address.city""address.state"将在filterOutAllExcept("address.state","address.city")中传递。我无法对地址使用其他过滤器,因为我需要根据对象引用dot(。)过滤其属性,例如address.state

我已经解决了这些github问题,但杰克逊对嵌套对象属性的支持最近没有更新。

https://github.com/FasterXML/jackson-core/issues/230

https://github.com/FasterXML/jackson-databind/issues/1040

https://github.com/spring-projects/spring-framework/issues/17187

任何建议都会有很大帮助。。谢谢。

0 个答案:

没有答案