为了考虑代码的兼容性,有时候需要将对象进行格式化.下面做一个最常用的对象格式进行转换,将对象apple转换为map
不说多话,用代码交流.
public class BeanToMap { /** * 将bean转化为map 如果本身为map则不需要转换了 * 考虑兼容性 * @param List<Object> * @return */public static List<Map> changeBean2MapList(List<?> list){ List<Map> returnList = new ArrayList<Map>(); try { if(null != list && list.size() >0 ){ for(Object obj:list){ if(obj instanceof Map){ returnList.add((Map)obj); }else{ Class clazz = obj.getClass();//获取类型类,这是反射机制,得到的是一个对象是什么类型 Field[] fields = clazz.getDeclaredFields();//获取类所有声明的字段,不包含父类中的字段 Map returnMap = new HashMap(); for(Field field:fields){ field.setAccessible(true);//反射方法, 在类声明的外部获取private变量的value需要这个设置,否则会有异常 String key = field.getName(); Object value = field.get(obj); returnMap.put(key, value); } returnList.add(returnMap); obj = null; } } } list.clear();//将list置为null不会清除记录,只有clear return returnList; } catch (Exception e) { e.printStackTrace(); } return returnList; } public static void main(String[] args) { List<Apple> list = new ArrayList<Apple>(); Apple a = new Apple(); a.setColor("red"); a.setPrice("11"); Apple a1 = new Apple(); a1.setColor("blue"); a1.setPrice("12"); list.add(a); list.add(a1); List<Map> listMap = new ArrayList<Map>(); listMap = BeanToMap.changeBean2MapList(list); for(int i = 0; i<listMap.size(); i++){ for(Object obj : listMap.get(1).keySet()){ System.out.println(obj); } } } }