1.JavaBean
- public class Person {
- private String name;
- private Integer age;
- private String job;
- private List<String> school;
- private String address;
- private List<Score> score;
- //省略get/set方法
- }
- public class Score {
- private String cource_name;
- private Integer cource_score;
- //省略get/set方法
- }
2.JavaBean与Map相互转换(使用Apache Commons的BeanUtil实现)
- //Map<String,Object>转成JavaBean
- //测试已通过,Bean中包含另一个Bean成员也可以
- public static Object transMap2Bean(Map<String, Object> map, Object obj) {
- if (map == null || obj == null) {
- return null;BeanUtils
- }
- try {
- BeanUtils.populate(obj, map);
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- return obj;
- }
- //JavaBean转成Map<String,Object>
- //测试已通过,Bean中包含另一个Bean成员也可以
- public static Map<String, Object> transBean2Map(Object obj) {
- if (obj == null) {
- return null;
- }
- Map<String, Object> map = new HashMap<String, Object>();
- try {
- BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
- PropertyDescriptor[] propertyDescriptors = beanInfo
- .getPropertyDescriptors();
- for (PropertyDescriptor property : propertyDescriptors) {
- String key = property.getName();
- // 过滤class属性
- if (!key.equals("class")) {
- // 得到property对应的getter方法
- Method getter = property.getReadMethod();
- Object value = getter.invoke(obj);
- map.put(key, value);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- return map;
- }
3.JavaBean与Json相互转换(使用JSONObject实现,需要导入json-lib.jar)
- //json字符串转成JavaBean
- //测试已通过
- @SuppressWarnings("unchecked")
- public static <T> T json2Bean(String jsonString, Class<T> beanCalss) {
- JSONObject jsonObject = JSONObject.fromObject(jsonString);
- T bean = (T) JSONObject.toBean(jsonObject, beanCalss);
- return bean;
- }
- //JavaBean转成json字符串
- //测试已通过
- public static String beanToJson(Object bean) {
- JSONObject json = JSONObject.fromObject(bean);
- return json.toString();
- }
4.JavaBean与DBObject相互转换(DBObject是MongoDB在Java驱动是使用的类)
- //DBObject转换成JavaBean
- //测试已通过
- public static <T> T dbObject2Bean(DBObject dbObject, T bean) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
- if (bean == null) { //测试已通过
- return null;
- }
- Field[] fields = bean.getClass().getDeclaredFields();
- for (Field field : fields) {
- String varName = field.getName();
- Object object = dbObject.get(varName);
- if (object != null) {
- BeanUtils.setProperty(bean, varName, object);
- }
- }
- return bean;
- }
- @SuppressWarnings("unchecked")
- public static <T> DBObject bean2DBObject(T bean) throws IllegalArgumentException, IllegalAccessException {
- if (bean == null) {
- return null;
- }
- DBObject dbObject = new BasicDBObject();
- // 获取对象对应类中的所有属性域
- Field[] fields = bean.getClass().getDeclaredFields();
- for (Field field : fields) {
- // 获取属性名
- String varName = field.getName();
- // 修改访问控制权限
- boolean accessFlag = field.isAccessible();
- if (!accessFlag) {
- field.setAccessible(true);
- }
- Object param = field.get(bean);
- if (param == null) {
- continue;
- } else if (param instanceof Integer) {// 判断变量的类型
- int value = ((Integer) param).intValue();
- dbObject.put(varName, value);
- } else if (param instanceof String) {
- String value = (String) param;
- dbObject.put(varName, value);
- } else if (param instanceof Double) {
- double value = ((Double) param).doubleValue();
- dbObject.put(varName, value);
- } else if (param instanceof Float) {
- float value = ((Float) param).floatValue();
- dbObject.put(varName, value);
- } else if (param instanceof Long) {
- long value = ((Long) param).longValue();
- dbObject.put(varName, value);
- } else if (param instanceof Boolean) {
- boolean value = ((Boolean) param).booleanValue();
- dbObject.put(varName, value);
- } else if (param instanceof Date) {
- Date value = (Date) param;
- dbObject.put(varName, value);
- } else if (param instanceof List) {
- List<Object> list = (List<Object>) param;
- dbObject.put(varName, list);
- } else if (param instanceof Map) {
- Map<Object, Object> map = (Map<Object, Object>) param;
- dbObject.put(varName, map);
- }
- // 恢复访问控制权限
- field.setAccessible(accessFlag);
- }
- return dbObject;
- }
5.测试代码
- package test;
- import java.lang.reflect.InvocationTargetException;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.junit.Before;
- import org.junit.Test;
- import com.mongodb.BasicDBObject;
- import com.mongodb.DBObject;
- import com.zmy.bean.Person;
- import com.zmy.bean.Score;
- import com.zmy.util.BeanUtil;
- import com.zmy.util.DBObjectUtil;
- public class ConvertTest {
- private Person person = null;
- private Map<String, Object> map = null;
- @Before
- public void initBean(){
- person = new Person();
- Score score1 = new Score();
- Score score2 = new Score();
- person.setAddress("大连");
- person.setAge(21);
- person.setJob("coder");
- person.setName("zmy");
- List<String> schools = new ArrayList<String>();
- List<Score> scores = new ArrayList<Score>();
- schools.add("DLUT");
- score1.setCource_name("course1");
- score1.setCource_score(85);
- score2.setCource_name("course2");
- score2.setCource_score(80);
- scores.add(score1);
- scores.add(score2);
- person.setSchool(schools);
- person.setScore(scores);
- }
- @Before
- public void initMap(){
- map = new HashMap<String, Object>();
- map.put("address", "大连");
- map.put("name", "zmy");
- map.put("job", "coder");
- map.put("age", 21);
- List<String> schools = new ArrayList<String>();
- schools.add("DLUT");
- schools.add("HUK");
- map.put("school", schools);
- List<Score> scores = new ArrayList<Score>();
- Score score1 = new Score();
- Score score2 = new Score();
- score1.setCource_name("course1");
- score1.setCource_score(85);
- score2.setCource_name("course2");
- score2.setCource_score(80);
- scores.add(score1);
- scores.add(score2);
- map.put("score", scores);
- }
- @Test
- public void testBean2Map(){
- Map<String, Object> map = BeanUtil.transBean2Map(person);
- System.out.println(map.toString());
- }
- @Test
- public void testMap2Bean(){
- Person person = (Person) BeanUtil.transMap2Bean(map, new Person());
- System.out.println(person.getName());
- }
- @Test
- public void testBean2Json(){
- String json = BeanUtil.beanToJson(person);
- System.out.println(json);
- Person person2 = BeanUtil.json2Bean(json, Person.class);
- System.out.println(person2.getName());
- }
- @Test
- public void testDBObject2Bean(){
- DBObject dbObject = new BasicDBObject(map);
- try {
- Person p = BeanUtil.dbObject2Bean(dbObject, new Person());
- System.out.println(p.getName());
- } catch (IllegalAccessException | InvocationTargetException
- | NoSuchMethodException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println("转换error!!!");
- }
- }
- @Test
- public void testBean2DBObject(){
- try {
- DBObject dbObject = DBObjectUtil.bean2DBObject(person);
- System.out.println(dbObject.get("score"));
- System.out.println(person.getScore());
- } catch (IllegalArgumentException | IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- System.out.println("转换error!!!");
- }
- }
- }