当一个类内存在一个复杂属性,而引用的复杂属性中又含有此类的复杂属性时,比如员工内有部门的属性,而部门内又存在员工属性时,使用Gson转json数据时,就会出现死循环,因而报错,需要使用Gson的过滤方法进行过滤
//此为要过滤掉的属性数组
String[] gl = {"chengji","kecheng"};
//创建临时实例,并编写过滤规则
Gson gson = new GsonBuilder().addSerializationExclusionStrategy(new ExclusionStrategy() {
//此为转json的字段,当字段名与数组中的某个值一致时,不进行转json
@Override
public boolean shouldSkipField(FieldAttributes fa) {
for (String s : gl) {
if(s.equals(fa.getName())){
return true;
}
}
return false;
}
@Override
public boolean shouldSkipClass(Class<?> arg0) {
// TODO Auto-generated method stub
return false;
}
}).create();
String json = gson.toJson(list);