Java--Bean、Map相互轉換

一、說明

平時日常Java開發,經常會涉及到Java Bean和Map之間的類型轉換,當然項目裏或者第三方jar都提供了各種實現api,這裏主要通過Java代碼,非工具類來實現這兩者之間的轉換。
文中用到的Logger是slf4j-api-1.7.25.jar架包 網盤直接下載 https://pan.baidu.com/s/122siUCAQwZ55kYfdoD97sA
可到Maven官網搜索 "org.slf4j » slf4j-api" 依賴下載所需版本 https://mvnrepository.com/

二、代碼實現

轉換關係有以下四種

bean To map
map To bean
listBean To listMap
listMap To listBean

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * 非工具類Java bean and map 互轉方法代碼
 * @author Justin
 *
 */
public class BeanAndMapConvertUtil {
	
	private static Logger logger = LoggerFactory.getLogger(BeanAndMapConvertUtil.class);
	
	/**
	 * bean To map
	 * @param object
	 * @return
	 */
	public static Map<String, Object> beanToMap(Object object) {
		Map<String, Object> map = new HashMap<String,Object>();
	    for (Field field : object.getClass().getDeclaredFields()){
	        try {
	        	boolean flag = field.isAccessible();
	            field.setAccessible(true);
	            Object obj = field.get(object);
	            map.put(field.getName(), obj);
	            field.setAccessible(flag);
	        } catch (Exception e) {
	        	logger.error("convertBeanToMap Error {}" ,e);
	        }
	    }
	    return map;
	}
	
	
	/**
	 * map To bean
	 * @param map
	 * @param bean
	 * @return
	 */
	public static <T> T mapToBean(Map<String, Object> map, Class<T> bean) {
		T t = null;
		try {
			t = bean.newInstance();
			for(Field field : bean.getDeclaredFields()) {
				if (map.containsKey(field.getName())) {
					boolean flag = field.isAccessible();
		            field.setAccessible(true);
		            Object obj = map.get(field.getName());
		            if (null != obj && field.getType().isAssignableFrom(obj.getClass())) {
		            	 field.set(t, obj);
					}
		            field.setAccessible(flag);
				}
			}
		} catch (Exception e) {
			logger.error("convertMapToBean Error {}" ,e);
			e.printStackTrace();
		}
		return t;
	}
	
	/**
	 * listBean	To	listMap
	 * @param listBean
	 * @return
	 */
	public static <T> List<Map<String,Object>> listBeanToListMap(List<T> listBean){
		if(null == listBean) throw new NullPointerException("listBean is null");
		List<Map<String,Object>> listMap = new ArrayList<Map<String,Object>>();
		for(T t : listBean){
			listMap.add(beanToMap(t));
		}
		return listMap;
	}
	
	/**
	 * listMap	To	listBean
	 * @param listMap
	 * @return
	 */
	public static <T>  List<T> listMapToListBean(List<Map<String,Object>> listMap,Class<T> clazz){
		if(null == listMap) throw new NullPointerException("listMap is null");
		List<T> listBean = new ArrayList<T>();
		for(Map<String,Object> map : listMap){
			listBean.add(mapToBean(map, clazz));
		}
		return listBean;
	}
	
	public static void main(String[] args) {
		System.out.println("===========bean to map===========");
		Student bean = new Student("1001","張三","男",22);
		Map<String, Object> map = beanToMap(bean);
		System.out.println(map.toString());
		
		System.out.println("===========map to bean===========");
		Student mapToBean = mapToBean(map, Student.class);
		System.out.println(mapToBean.toString());
		
		System.out.println("===========listBean to listMap===========");
		List<Student> listBean = new ArrayList<Student>();
		listBean.add(bean);
		List<Map<String, Object>> listBeanToListMap = new ArrayList<Map<String, Object>>();
		listBeanToListMap = listBeanToListMap(listBean);
		System.out.println(listBeanToListMap.toString());
		
		
		System.out.println("===========listMap to listBean===========");
		List<Student> listMapToListBean = new ArrayList<Student>();
		listMapToListBean = listMapToListBean(listBeanToListMap, Student.class);
		System.out.println(listMapToListBean.toString());
	}
}	

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章