可以在运行时自定义FilterProvider吗?

时间:2014-02-21 16:12:28

标签: json serialization view filter runtime

我想询问是否可以在运行时在Json序列化过滤器中进行自定义?

My Source看起来像:

FilterProvider filters = new SimpleFilterProvider()
            .addFilter("XXX",SimpleBeanPropertyFilter.serializeAllExcept(JsonFilterSerializer.getInstance().getMyView()));
            String json= mapper.writer(filters).withDefaultPrettyPrinter().writeValueAsString(obj);

我需要的解决方案就像:

            FilterProvider filters = new SimpleFilterProvider();
if(x==true)
            filters.addFilter("XXX",SimpleBeanPropertyFilter.serializeAllExcept(JsonFilterSerializer.getInstance().getXXXView()));
            if(y==true)
            filters.addFilter("YYY",SimpleBeanPropertyFilter.serializeAllExcept(JsonFilterSerializer.getInstance().getYYYView()));
            if(z==true)
            filters.addFilter("ZZZ",SimpleBeanPropertyFilter.serializeAllExcept(JsonFilterSerializer.getInstance().getZZZView()));

        String json= mapper.writer(filters).withDefaultPrettyPrinter().writeValueAsString(obj);

我喜欢通过If向我的mapper添加过滤器视图。否则我必须在每种情况下分别添加它们,我认为这是非常迂回的。

1 个答案:

答案 0 :(得分:0)

解决方案:(有点乱)

String[] xxx= JsonFilterSerializer.getInstance().getxxxView();
FilterProvider filters = new SimpleFilterProvider()
                .addFilter("xxxx",SimpleBeanPropertyFilter.serializeAllExcept(xxx))

这可以用if if case包装来解决问题,正如我所做的那样。

希望它有所帮助。