前段时间在编写接口的过程中,后台需要给前端返回JSON数据,但是查询出来返回的数据里面有很多属性是不需要的,当时想着用字符串替换,但是发现好像根本不靠谱,
多个属性根本无卵用,后面再网上查了下,发现Java里面有提供JSON属性过滤的方法,使用了下感觉还不错,所以记录一下。
这里提供了两种过滤方法,分别用于不同的场景,可以视实际情况使用:
1.多个属性过滤
PropertyFilter profilter = new PropertyFilter(){
@Override
public boolean apply(Object object, String name, Object value) {
if(name.equalsIgnoreCase("指定字段")){
//false表示last字段将被排除在外
return false;
}
return true;
}
};
调用时:
String json = JSON.toJSONString(user, profilter);
上面的方法主要实用于多个属性字段过滤,该方法过滤属性灵活.当需要保留多个JSON属性数据时,可以使用上面的if后面嵌套多个else if即可过滤多个属性。
2.保留指定属性,过滤其他属性
SimplePropertyPreFilter filter = new SimplePropertyPreFilter(需要过滤属性的类.class, "需要使用的属性(可以为多个)");
调用时:
String json = JSON.toJSONString(user, filter);
该方法主要适用于指定属性字段保留,而过滤其他属性,也可保留多个属性,使用逗号隔开。