【发布时间】:2014-11-20 14:05:46
【问题描述】:
我正在尝试使用不同的 JsonFilters 来序列化同一类的对象。
想象一下 Foo 类
public class Foo{
Bar p1;
Bar p2;
}
和类酒吧
@JsonFilter("myFilter")
public class Bar{
String prop1;
String prop2;
String prop3;
}
现在我想要实现的是为 Foo 类中的变量 p1 和 p2 设置不同的 JsonFilters。
例如。对于 p1,我只想序列化 prop1,对于 p2,我想序列化 prop2 和 prop3。 获取以下json
{
"p1": { "prop1":"blabla" }
"p2": { "prop2":"blabla", "prop3":"blabla" }
}
所以我会使用以下过滤器,以便只有“prop1”会被序列化:
FilterProvider filter = new SimpleFilterProvider().addFilter("myFilter",
SimpleBeanPropertyFilter.filterOutAllExcept("prop1"));
String json = new ObjectMapper().filteredWriter(filter).writeValueAsString(foo)
但是使用它也会导致 p2 被序列化只有 prop1
我想像这样为 p2 创建另一个过滤器:
FilterProvider filter2 = new SimpleFilterProvider().addFilter("myFilter",
SimpleBeanPropertyFilter.filterOutAllExcept("prop2","prop3"));
但我真的找不到如何实现它,因此 p1 和 p2 有不同的过滤器,因为它们属于同一类 Foo。
感谢您的阅读,希望有人能帮忙!
【问题讨论】: