前端调用查询接口后后端返回的对象数据中往往存在一些null值,此时想将其置为空值。
/**
* 将类对象中为null的属性置为空值
* @param t
* @param <T>
* @return
*/
public static <T> T switchNullToEmpty(T t){
if (org.springframework.util.ObjectUtils.isEmpty(t)){
return null;
}
// 得到类对象
Class stuCla = t.getClass();
//得到属性集合
Field[] fields = stuCla.getDeclaredFields();
//将对象属性设为可访问(private此时也可以访问)
AccessibleObject.setAccessible(fields,true);
for (Field field:fields) {
try {
Object value = field.get(t);
//这里还得做一次判断,因为当数字类型的时候置空会报错的
if (value==null){
field.set(t,"");
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return t;
}
setAccessible这个属性必须写,否则当类对象中含有private属性时会报illegalaccessexception 是异常,表示实现反射机制时没权访问