实体类转Map
程序员文章站
2022-06-15 10:53:40
...
实体类转Map
开发需求:同一个方法在不同情况下向前端返回不同的实体类(几个实体类大部分字段都是相同的)。开始我直接在条件语句里使用model.addAttribute("item",xxx)的方式,将不同条件下三个不同的实体类封装为同名的"item"返回前端,但这种情况下报错了。程序不允许model里同名的对象存在不同类的情况。(具体报什么错不记得了,大概是这个意思)
解决方案:将实体类统统转换成map,然后以model.addAttribute("item",map)的方式返回,此时,无论想要往前端返回哪个实体类,model里放入的都是map,程序不再报错。(有参考其他人的代码,在此特别做一下记录。)
代码:
import java.beans.BeanInfo;
import java.beans.PropertyDescriptor;
import java.beans.Introspector;
import java.lang.reflect.Method;
..............
public Map<String,Object> obj2Map(Object obj){
Map<String,Object> map = new HashMap<>();
try{
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for(PropertyDescriptor property : propertyDescriptors ){
String key = property.getName();
if(!key.equals("class")){
Method method = property.getReadMethod();
Object value = method.invoke(obj);
map.put(key,value);
}
}
}catch(Exception e){
e.printStackTrace;
}
}
下一篇: 实体类转Map