我想询问是否可以在运行时在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添加过滤器视图。否则我必须在每种情况下分别添加它们,我认为这是非常迂回的。
答案 0 :(得分:0)
解决方案:(有点乱)
String[] xxx= JsonFilterSerializer.getInstance().getxxxView();
FilterProvider filters = new SimpleFilterProvider()
.addFilter("xxxx",SimpleBeanPropertyFilter.serializeAllExcept(xxx))
这可以用if if case包装来解决问题,正如我所做的那样。
希望它有所帮助。