`

Java中Bean与Map/Json/DBObject的相互转换

阅读更多

1.JavaBean

 

[java] view plain copy
 
  1. public class Person {  
  2.   
  3.     private String name;  
  4.     private Integer age;  
  5.     private String job;  
  6.     private List<String> school;  
  7.     private String address;  
  8.     private List<Score> score;  
  9.     //省略get/set方法  
  10. }  

 

[java] view plain copy
 
  1. public class Score {  
  2.   
  3.     private String cource_name;  
  4.     private Integer cource_score;  
  5.     //省略get/set方法  
  6. }  


2.JavaBean与Map相互转换(使用Apache Commons的BeanUtil实现)

 

 

[java] view plain copy
 
  1.        //Map<String,Object>转成JavaBean  
  2. //测试已通过,Bean中包含另一个Bean成员也可以  
  3. public static Object transMap2Bean(Map<String, Object> map, Object obj) {  
  4.     if (map == null || obj == null) {  
  5.         return null;BeanUtils  
  6.     }  
  7.     try {  
  8.         BeanUtils.populate(obj, map);  
  9.     } catch (Exception e) {  
  10.         e.printStackTrace();  
  11.         return null;  
  12.     }  
  13.     return obj;  
  14. }  
  15.   
  16. //JavaBean转成Map<String,Object>  
  17. //测试已通过,Bean中包含另一个Bean成员也可以  
  18. public static Map<String, Object> transBean2Map(Object obj) {  
  19.   
  20.     if (obj == null) {  
  21.         return null;  
  22.     }  
  23.     Map<String, Object> map = new HashMap<String, Object>();  
  24.     try {  
  25.         BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());  
  26.         PropertyDescriptor[] propertyDescriptors = beanInfo  
  27.                 .getPropertyDescriptors();  
  28.         for (PropertyDescriptor property : propertyDescriptors) {  
  29.             String key = property.getName();  
  30.   
  31.             // 过滤class属性  
  32.             if (!key.equals("class")) {  
  33.                 // 得到property对应的getter方法  
  34.                 Method getter = property.getReadMethod();  
  35.                 Object value = getter.invoke(obj);  
  36.   
  37.                 map.put(key, value);  
  38.             }  
  39.   
  40.         }  
  41.     } catch (Exception e) {  
  42.         e.printStackTrace();  
  43.         return null;  
  44.     }  
  45.   
  46.     return map;  
  47.   
  48. }  


3.JavaBean与Json相互转换(使用JSONObject实现,需要导入json-lib.jar)

 

 

[java] view plain copy
 
  1.        //json字符串转成JavaBean  
  2. //测试已通过  
  3. @SuppressWarnings("unchecked")  
  4. public static <T> T json2Bean(String jsonString, Class<T> beanCalss) {  
  5.            JSONObject jsonObject = JSONObject.fromObject(jsonString);  
  6.            T bean = (T) JSONObject.toBean(jsonObject, beanCalss);  
  7.           
  8.            return bean;  
  9.        }  
  10.   
  11. //JavaBean转成json字符串  
  12. //测试已通过  
  13. public static String beanToJson(Object bean) {  
  14.            JSONObject json = JSONObject.fromObject(bean);  
  15.            return json.toString();  
  16.    }  


4.JavaBean与DBObject相互转换(DBObject是MongoDB在Java驱动是使用的类)

 

 

[java] view plain copy
 
  1.        //DBObject转换成JavaBean  
  2. //测试已通过  
  3. public static <T> T dbObject2Bean(DBObject dbObject, T bean) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {    
  4.            if (bean == null) {  //测试已通过  
  5.                return null;    
  6.            }    
  7.            Field[] fields = bean.getClass().getDeclaredFields();    
  8.            for (Field field : fields) {    
  9.                String varName = field.getName();    
  10.                Object object = dbObject.get(varName);    
  11.                if (object != null) {    
  12.                    BeanUtils.setProperty(bean, varName, object);    
  13.                }    
  14.            }    
  15.            return bean;    
  16.        }  
  17.   
  18.        @SuppressWarnings("unchecked")  
  19. public static <T> DBObject bean2DBObject(T bean) throws IllegalArgumentException, IllegalAccessException {  
  20.     if (bean == null) {  
  21.         return null;  
  22.     }  
  23.     DBObject dbObject = new BasicDBObject();  
  24.     // 获取对象对应类中的所有属性域  
  25.     Field[] fields = bean.getClass().getDeclaredFields();  
  26.     for (Field field : fields) {  
  27.         // 获取属性名  
  28.         String varName = field.getName();  
  29.         // 修改访问控制权限  
  30.         boolean accessFlag = field.isAccessible();  
  31.         if (!accessFlag) {  
  32.             field.setAccessible(true);  
  33.         }  
  34.         Object param = field.get(bean);  
  35.         if (param == null) {  
  36.             continue;  
  37.         } else if (param instanceof Integer) {// 判断变量的类型  
  38.             int value = ((Integer) param).intValue();  
  39.             dbObject.put(varName, value);  
  40.         } else if (param instanceof String) {  
  41.             String value = (String) param;  
  42.             dbObject.put(varName, value);  
  43.         } else if (param instanceof Double) {  
  44.             double value = ((Double) param).doubleValue();  
  45.             dbObject.put(varName, value);  
  46.         } else if (param instanceof Float) {  
  47.             float value = ((Float) param).floatValue();  
  48.             dbObject.put(varName, value);  
  49.         } else if (param instanceof Long) {  
  50.             long value = ((Long) param).longValue();  
  51.             dbObject.put(varName, value);  
  52.         } else if (param instanceof Boolean) {  
  53.             boolean value = ((Boolean) param).booleanValue();  
  54.             dbObject.put(varName, value);  
  55.         } else if (param instanceof Date) {  
  56.             Date value = (Date) param;  
  57.             dbObject.put(varName, value);  
  58.         } else if (param instanceof List) {  
  59.             List<Object> list = (List<Object>) param;  
  60.             dbObject.put(varName, list);  
  61.         } else if (param instanceof Map) {  
  62.             Map<Object, Object> map = (Map<Object, Object>) param;  
  63.             dbObject.put(varName, map);  
  64.         }  
  65.         // 恢复访问控制权限  
  66.         field.setAccessible(accessFlag);  
  67.     }  
  68.     return dbObject;  
  69. }  

 

5.测试代码

[java] view plain copy
 
  1. package test;  
  2.   
  3. import java.lang.reflect.InvocationTargetException;  
  4. import java.util.ArrayList;  
  5. import java.util.HashMap;  
  6. import java.util.List;  
  7. import java.util.Map;  
  8.   
  9. import org.junit.Before;  
  10. import org.junit.Test;  
  11.   
  12. import com.mongodb.BasicDBObject;  
  13. import com.mongodb.DBObject;  
  14. import com.zmy.bean.Person;  
  15. import com.zmy.bean.Score;  
  16. import com.zmy.util.BeanUtil;  
  17. import com.zmy.util.DBObjectUtil;  
  18.   
  19. public class ConvertTest {  
  20.   
  21.     private Person person = null;  
  22.     private Map<String, Object> map = null;  
  23.       
  24.     @Before  
  25.     public void initBean(){  
  26.         person = new Person();  
  27.         Score score1 = new Score();  
  28.         Score score2 = new Score();  
  29.         person.setAddress("大连");  
  30.         person.setAge(21);  
  31.         person.setJob("coder");  
  32.         person.setName("zmy");  
  33.         List<String> schools = new ArrayList<String>();  
  34.         List<Score> scores = new ArrayList<Score>();  
  35.         schools.add("DLUT");  
  36.         score1.setCource_name("course1");  
  37.         score1.setCource_score(85);  
  38.         score2.setCource_name("course2");  
  39.         score2.setCource_score(80);  
  40.         scores.add(score1);  
  41.         scores.add(score2);  
  42.         person.setSchool(schools);  
  43.         person.setScore(scores);  
  44.     }  
  45.       
  46.     @Before  
  47.     public void initMap(){  
  48.         map = new HashMap<String, Object>();  
  49.         map.put("address""大连");  
  50.         map.put("name""zmy");  
  51.         map.put("job""coder");  
  52.         map.put("age"21);  
  53.         List<String> schools = new ArrayList<String>();  
  54.         schools.add("DLUT");  
  55.         schools.add("HUK");  
  56.         map.put("school", schools);  
  57.         List<Score> scores = new ArrayList<Score>();  
  58.         Score score1 = new Score();  
  59.         Score score2 = new Score();  
  60.         score1.setCource_name("course1");  
  61.         score1.setCource_score(85);  
  62.         score2.setCource_name("course2");  
  63.         score2.setCource_score(80);  
  64.         scores.add(score1);  
  65.         scores.add(score2);  
  66.         map.put("score", scores);  
  67.     }  
  68.       
  69.     @Test  
  70.     public void testBean2Map(){  
  71.         Map<String, Object> map = BeanUtil.transBean2Map(person);  
  72.         System.out.println(map.toString());  
  73.     }  
  74.       
  75.     @Test  
  76.     public void testMap2Bean(){  
  77.         Person person = (Person) BeanUtil.transMap2Bean(map, new Person());  
  78.         System.out.println(person.getName());  
  79.     }  
  80.       
  81.     @Test  
  82.     public void testBean2Json(){  
  83.         String json = BeanUtil.beanToJson(person);  
  84.         System.out.println(json);  
  85.           
  86.         Person person2 = BeanUtil.json2Bean(json, Person.class);  
  87.         System.out.println(person2.getName());  
  88.     }  
  89.       
  90.     @Test  
  91.     public void testDBObject2Bean(){  
  92.         DBObject dbObject = new BasicDBObject(map);  
  93.         try {  
  94.             Person p = BeanUtil.dbObject2Bean(dbObject, new Person());  
  95.             System.out.println(p.getName());  
  96.         } catch (IllegalAccessException | InvocationTargetException  
  97.                 | NoSuchMethodException e) {  
  98.             // TODO Auto-generated catch block  
  99.             e.printStackTrace();  
  100.             System.out.println("转换error!!!");  
  101.         }  
  102.           
  103.     }  
  104.       
  105.     @Test  
  106.     public void testBean2DBObject(){  
  107.         try {  
  108.             DBObject dbObject = DBObjectUtil.bean2DBObject(person);  
  109.             System.out.println(dbObject.get("score"));  
  110.             System.out.println(person.getScore());  
  111.         } catch (IllegalArgumentException | IllegalAccessException e) {  
  112.             // TODO Auto-generated catch block  
  113.             e.printStackTrace();  
  114.             System.out.println("转换error!!!");  
  115.         }  
  116.     }  
  117. }  
分享到:
评论

相关推荐

    java操作mongodb时,对象bean和DBObject相互转换的方法(推荐)

    在Java中操作MongoDB数据库时,常常需要将Java对象(对象Bean)与MongoDB的数据表示对象DBObject进行相互转换。这主要是因为MongoDB的驱动程序使用DBObject来存储和检索数据,而我们通常会用面向对象的方式来定义和...

    MongoDB Java API 中文

    从数据库中查询对象时,可以通过设置 `DBObject` 类型来转换查询结果: ```java collection.setObjectClass(Tweet.class); Tweet myTweet = (Tweet) collection.findOne(); ``` #### 三、创建连接 建立与 MongoDB...

    java 操作mongodb

    可以使用 `JSON.parse()` 解析 JSON 字符串为 `DBObject`,反之使用 `DBObject.toString()` 输出 JSON 格式。 通过以上步骤,初学者可以了解并开始在 Java 环境下操作 MongoDB。实际应用中,还应该考虑连接池、事务...

    在Java中操作几何体.docx

    在Java中操作几何体主要涉及Oracle Spatial Java API的使用,特别是`JGeometry`类,它提供了与数据库中的SDO_GEOMETRY类型对象交互的能力。Oracle Spatial API包含在`$ORACLE_HOME/md/jlib`目录下的`sdoapi.jar`和`...

    MongoDB Java Driver 简单操作

    在 Java 中,我们可以通过 `Mongo` 类来建立与 MongoDB 的连接。例如: ```java Mongo mongo = new Mongo(); // 默认连接 localhost:27017 Mongo mongo = new Mongo("localhost"); // 指定主机名 Mongo mongo = new ...

    Java操作mongoDB使用文档.docx(16页.docx

    创建一个`Map`对象,将数据放入其中,然后将其转换为`DBObject`: ```java Map, String&gt; data = new HashMap(); data.put("key", "value"); DBObject dbObject = new BasicDBObject(data); DBCollection dbcol = ...

    JAVA对MongoDB的操作.doc

    在本文中,我们将深入探讨如何使用Java语言操作MongoDB数据库。MongoDB是一个流行的NoSQL数据库,以其灵活性、高性能和可扩展性而闻名。Java作为广泛使用的编程语言,提供了丰富的API来与MongoDB进行交互。以下是...

    MongoDB JAVA API

    MongoDB Java API是Java开发者与MongoDB数据库交互的接口,提供了丰富的功能,使得在Java应用程序中存储、查询和处理MongoDB的数据变得简单。本篇将详细介绍MongoDB Java Driver的一些核心概念和常用操作。 首先,...

    mongodb java 调用例子

    本文档主要介绍如何在Java环境中使用MongoDB进行数据库操作的基本方法。通过一个简单的Java程序,我们将会了解到如何连接MongoDB服务器、创建数据库、插入文档、查询文档以及删除文档等基本功能。 #### 二、环境...

    Websql-Sqlite-Service:websql sqlite 库,websqlite

    dbObject : window , // database object eg: window.openDatabase timeout : 5000 // process waiting time } ) 名称 描述 ID 数据库名称 数据库对象 数据库对象 超时 sql进程超时 版本 数据库版本(默认:1.0...

    MongoDB java使用文档

    ### MongoDB Java 使用文档知识点概述 #### 一、MongoDB 的安装与配置 ##### Windows 下的安装与配置 1. **下载 MongoDB**: - 访问 MongoDB 官方网站:[http://www.mongodb.org/](http://www.mongodb.org/)。 ...

    spring mongodb 用法总结和实例

    7. **JSON.parse**:在将JSON字符串转换为`DBObject`时,使用了`JSON.parse(jsonSql)`方法。这是MongoDB驱动程序的一部分,将JSON字符串解析为可以执行的MongoDB命令对象。 8. **DBObject**:`DBObject`是MongoDB...

    mongodb驱动java版

    在Java开发环境中,为了与MongoDB进行交互,我们通常会使用官方提供的Java驱动程序。本篇将深入探讨“MongoDB驱动Java版”,即mongodb-java-driver,版本为2.11.2。 MongoDB Java驱动程序是Java开发者与MongoDB...

    JAVA mongodb 聚合几种查询方式详解

    JAVA 中使用 MongoDB 的聚合查询方式有多种,包括使用 BasicDBObject 和 DBObject 两种方式。通过本文的介绍,读者可以了解聚合查询的基础知识和实现方式,从而更好地使用 MongoDB 实现复杂的数据分析和处理。

    mongodb的java 实现

    在本篇文章中,我们将深入探讨如何使用Java对MongoDB进行基本的操作,包括连接数据库、插入数据、查询数据、更新数据以及删除数据等核心功能。 #### 二、连接MongoDB数据库 在Java中,通常使用`com.mongodb.Mongo`...

    基于java的mongodb开发环境搭建

    ### 基于Java的MongoDB开发环境搭建详解 #### 一、开发环境配置 **系统环境:** Windows **集成开发环境(IDE):** IntelliJ IDEA **数据库:** MongoDB 为了确保项目的顺利进行,我们需要首先安装并配置好这些...

    MongoDB Java连接数据库.pdf

    在 Java 开发环境中,我们通常使用 MongoDB Java 驱动程序来与 MongoDB 数据库进行交互。本文将深入探讨如何配置 Java 开发环境以连接到 MongoDB 数据库。 首先,确保已安装 Java 运行时环境 (JRE) 和 Java 开发...

    java操作mongodb

    本篇文章将深入探讨如何使用 Java SDK 来与 MongoDB 进行交互,包括基本的增、删、改、查操作。 首先,要进行 Java 和 MongoDB 的交互,你需要下载 MongoDB 的 Java 驱动程序,这可以从 MongoDB 官方网站的下载页面...

    java操作mongoDB查询的实例详解

    Java操作MongoDB查询的实例详解 MongoDB是一个流行的NoSQL数据库系统,由C++编写,设计为分布式文件存储,特别适合处理大规模Web应用程序的数据存储...理解这些基本概念和操作方式是有效使用MongoDB与Java集成的基础。

Global site tag (gtag.js) - Google Analytics