欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实体类转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;
    }
}