//实现PropertyFilter中的apply方法
public class ComplexPropertyPreFilter implements PropertyFilter {
private Map<Class<?>, Set<String>> includeMap = new HashMap<Class<?>, Set<String>>();
//@Override
public boolean apply(Object source, String name, Object value) {
for(Entry<Class<?>, Set<String>> entry : includeMap.entrySet()) {
Class<?> class1 = entry.getKey();
if(source.getClass() == class1){
Set<String> fields = entry.getValue();
for(String field : fields) {
if(field.equals(name)){
return false;
}
}
}
}
return true;
}
public ComplexPropertyPreFilter(Map<Class<?>, Set<String>> includeMap){
this.includeMap = includeMap;
}
}
测试类:
class Wheel{
String name;
int size;
String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Wheel() {
super();
this.color="black";
this.name="miqilin";
this.size = 17;
}
}
class Sofa{
String color;
int count;
String texture;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getTexture() {
return texture;
}
public void setTexture(String texture) {
this.texture = texture;
}
public Sofa() {
super();
this.color = "white";
this.count = 4;
this.texture = "fur";
}
}
class Car {
private Wheel wheel;
private Sofa sofa;
public Wheel getWheel() {
return wheel;
}
public void setWheel(Wheel wheel) {
this.wheel = wheel;
}
public Sofa getSofa() {
return sofa;
}
public void setSofa(Sofa sofa) {
this.sofa = sofa;
}
public Car() {
super();
this.wheel = new Wheel();
this.sofa = new Sofa();
}
}
public class Test {
public static void main(String args[]){
Map<String,Car> map = new HashMap<String, Car>();
map.put("car1", new Car());
map.put("car2", new Car());
//需要过滤的类 + 属性
Map<Class<?>, Set<String>> includeMap = new HashMap<Class<?>, Set<String>>();
Set<String> set = new HashSet<String>();
set.add("color");
includeMap.put(Wheel.class, set);
set = new HashSet<String>();
set.add("texture");
includeMap.put(Sofa.class, set);
ComplexPropertyPreFilter cfilter = new ComplexPropertyPreFilter(includeMap);
SerializeWriter sw = new SerializeWriter();
JSONSerializer serializer = new JSONSerializer(sw);
serializer.getPropertyFilters().add(cfilter);
serializer.write(map);
System.out.println(sw.toString());
}
}