前段時間在編寫接口的過程中,后台需要給前端返回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);
該方法主要適用於指定屬性字段保留,而過濾其他屬性,也可保留多個屬性,使用逗號隔開。