fastjson(十一)使用SimplePropertyPreFilter过滤属性
需要根据不同的环境返回定制化返回属性时,可以使用SimplePropertyPreFilter。
SimplePropertyPreFilter的代码接口如下:
public class SimplePropertyPreFilter implements PropertyPreFilter {
public SimplePropertyPreFilter(String... properties){
this(null, properties);
}
public SimplePropertyPreFilter(Class<?> clazz, String... properties){
// ... ...
}
public Class<?> getClazz() {
return clazz;
}
public Set<String> getIncludes();
public Set<String> getExcludes();
/**
* @since 1.2.9
*/
public int getMaxLevel();
/**
* @since 1.2.9
*/
public void setMaxLevel(int maxLevel)
//...
}
你可以配置includes、excludes(使用getIncludes()、getExcludes()方法获得对象引用进行设置)。当class不为null时,针对特定类型;当class为null时,针对所有类型。
当includes的size > 0时,属性必须在includes中才会被序列化,excludes优先于includes。
来看一下示例代码:
示例对象:
package json.fastjson.filter.globalFilter;
public class VO {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
测试类:
package json.fastjson.filter.globalFilter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
public class TestGlobalFilter {
public static void main(String[] args) {
VO vo = new VO();
vo.setId(123);
vo.setName("flym");
SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class, "name");
System.out.println(filter.getExcludes());
System.out.println(filter.getIncludes());
System.out.println(JSON.toJSONString(vo, filter));
}
}
输出结果:
[]
[name]
{"name":"flym"}
