Mongodb数据库DBObject对象和Json数据的转化(用Gson操作)
来源:互联网 发布:洛天依mmd动作数据 编辑:程序博客网 时间:2024/06/04 18:56
转自:http://zyjustin9.iteye.com/blog/2018699 by:zyjustin9
Mongodb官方提供的Java驱动,保存与读取,需要的者是DBObject对象,这是一个接口,实现put,get等方法,跟map类似,如 果我们要直接把普通的java对象保存到mongodb,就需要先转换成DBObject对象,或者直接实现DBObject接口,操作起来相当复杂。还 好,monodb驱动带了把json转换成DBObject对象的功能,加上Google的Gson,就可以实现把普通的对象保存到mongodb中。如 果要从mogodb中读出对象,反过来操作即可,但有一点需要注意的是,mongodb的文档没有固定的字段,所以用Gson转换,可能因为各个文档属性 不同,转出的对象属性都是空的,要确保在插入时都是插入同一个类的对象。
下面的例子是把User对象插入到Mongodb中,并读出来
User.java:
public class User {private String name;private int age;Oid _id;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public class Oid{String $oid;public String get$oid() {return $oid;}public void set$oid(String $oid) {this.$oid = $oid;}}}
Main.java:
public static void main(String[] args) throws MongoException, UnknownHostException {Test t=new Test();DB db=t.getDb();DBCollection coll = db.getCollection("people"); User u1=new User(); u1.setName("joe"); u1.setAge(32); Gson gson=new Gson(); DBObject dbObject=(DBObject) JSON.parse(gson.toJson(u1)); coll.insert(dbObject); DBCursor cursor = coll.find();try {while(cursor.hasNext()){DBObject obj=cursor.next();User u=gson.fromJson(obj.toString(), User.class);System.out.println(u.getName()+"-"+u.getAge());}}finally{cursor.close();}}
为了方便,可以直接把Gson整合进驱动里,直接修改驱动的源代码
com.mongodb.DBCollection.java:
新增方法:
/** * 把普通的对象写入数据库 * * @param obj * @return */public WriteResult insert(Object obj) {Gson gson = new Gson();DBObject dbObject = (DBObject) JSON.parse(gson.toJson(obj));gson=null;return insert(dbObject);}
com.mongodb.DBCursor.java:
新增方法
/** * 从数据库读出对象 * @param obj * @param clazz * @return */ public <T> T nextObj(Class<T> clazz) { _checkType( CursorType.ITERATOR ); Gson gson=new Gson(); T u=gson.fromJson(_next().toString(), clazz);gson=null; return u; }
修改后的调用方法:
Main.java:
package com.mongo; import java.net.UnknownHostException; import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.MongoClient; public class Main { /** * @param args * @throws UnknownHostException */public static void main(String[] args) throws UnknownHostException {// TODO Auto-generated method stub MongoClient mongoClient = new MongoClient(); DB psdoc = mongoClient.getDB("psdoc"); DBCollection user=psdoc.getCollection("user"); User u1=new User(); u1.setAge(20); u1.setName("ssss"); //直接插入对象 user.insert(u1); DBCursor cursor=user.find(); while(cursor.hasNext()) { //传入类参数,反回该类对象 User u=cursor.nextObj(User.class); System.out.println(u.name); }} }
0 0
- Mongodb数据库DBObject对象和Json数据的转化(用Gson操作)
- Gson进行json字符串和对象之间的转化
- Gson进行json字符串和对象之间的转化
- Gson 专题详解 之一 简单的对象转化json和json转成对象
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- 【Gson】Json转换利器一-简单对象转化和带泛型的List转化
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Json转换利器Gson之实例一-简单对象转化和带泛型的List转化
- Json转换利器Gson——简单对象转化和带泛型的List转化
- 自定义JSP标签实现语言国际化(类似struts text标签),并同时支持图片、JS文件国际化
- Java统计一篇文章中出现次数最多的汉字或英文单词 又出现次数的统计
- C++中单引号“字符串”的用法
- ZOJ - 1048 - Financial Management
- window.location.hash属性介绍
- Mongodb数据库DBObject对象和Json数据的转化(用Gson操作)
- 淘宝内核组
- nginx源码学习资源(不断更新)
- IANA保留地址
- 调试Release发布版程序的Crash错误(五)
- 基于阻塞模式的简易javaHTTP服务器
- 程序员技术练级攻略
- ubuntu下切换到root权限(转)
- HDU - 1829 A Bug's Life (并查集应用)