1.bean转换map(java自省)

第一种方法:使用java自省方法自己来实现的

Person类:

public class Person implements Serializable {

	private static final long serialVersionUID = 1L;

	private String name;
	private Long id;

	public Person() {
		super();
	}

	public Person(String name, Long id) {
		super();
		this.name = name;
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", id=" + id + "]";
	}

}

 实现及测试:

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

public class BeanTMap<T> {
	public static void main(String[] args) {
		Person person = new Person("aaa",11l);
		BeanTMap<Person> beanTMap = new BeanTMap<Person>();
		Map<String, Object> bean2Map = beanTMap.bean2Map(person);
		System.out.println(bean2Map.toString());
	}

	public Map<String, Object> bean2Map(T t) {
		BeanInfo beanInfo = null;
		Map<String, Object> map = new HashMap<String, Object>();
		try {
			beanInfo = Introspector.getBeanInfo(t.getClass());
			PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
			for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
				String name = propertyDescriptor.getName();
				Method readMethod = propertyDescriptor.getReadMethod();
				map.put(name, readMethod.invoke(t, null));
			}
		} catch (IntrospectionException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
		return map;
	}

}

 使用Apache Commons BeanUtils

<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.3</version>
</dependency>

  

public Map<String, String> bean2Map2(T t) {
		Map<String, String> map = new HashMap<String, String>();
		try {
			 map = BeanUtils.describe(t);
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			e.printStackTrace();
		}
		return map;
		
	}

  

测试代码

Person person = new Person("aaa",11l);
		BeanTMap<Person> beanTMap = new BeanTMap<Person>();
		Map<String, String> bean2Map = beanTMap.bean2Map2(person);
		System.out.println(bean2Map.toString());

  

 

posted on 2018-06-04 17:18  开心就好呀·  阅读(220)  评论(0编辑  收藏  举报

导航