java中使用json格式字符串生成mongodb 对象的两种方法
使用java操作mongodb经常需要把DBObject对象转换成json字符串,或反过来到json字符串转换成DBObject对象保存如果要准确选择一个对象最准确的方法是直接根据期objectid进行查找,以下例子讲述这些用法。
方法一、利用json字符串直接生成mongodb的 DBObject对象
例子中的json字符串是利用DBObject的toString()方法生成的,json的官方要求是使用双引号,如果要严格办事,那么必把json串的的"用转义字符\"替换。
[*] String strJson="{ '_id' : { '$oid' : '52fdbe36e97fee8601000000'}}";
[*]strJson=strJson.replaceAll("\'", "\""); //把单引号替换成双引号,不用这句也可以执行成功。加这句是为了让我记住json应用中存在单双引号问题,在jquery中,如果json是用单引号的话,就会出错,在php中json用单引号也会出错。
[*] DBObject query = (BasicDBObject) JSON.parse(strJson);
方法二、利用Objectid对象生成id后再new出DBObject对象
[*]ObjectId oid = new ObjectId("52fdbe36e97fee8601000000");
[*]DBObject query = new BasicDBObject("_id", oid);
下面给出一段完整的根据Objectid查找出mongodb对象后,以json格式输出相关信息的DEMO函数,该段代码只是demo性质,没有关注逻辑的严密性。
[*]public String testmongodb(){
[*] String myStr = "";
[*] try{
[*] ServerAddress serverAddress=new ServerAddress("127.0.0.1",27017);
[*]
[*] MongoOptions mongoOptions=new MongoOptions();
[*] mongoOptions.autoConnectRetry=true;
[*] Mongo myMongo = new Mongo(serverAddress,mongoOptions);
[*]
[*] DB mydb = myMongo.getDB("admin");
[*] char[] pwd="123456".toCharArray();
[*] boolean blAuth=mydb.authenticate("admin", pwd);
[*]
[*] mydb=myMongo.getDB("test");
[*] DBCollection myColl = mydb.getCollection("testColl");
[*] //ObjectId oid = new ObjectId("52fdbe36e97fee8601000000");
[*] //DBObject query = new BasicDBObject("_id", oid);
[*] String strJson="{ '_id' : { '$oid' : '52fdbe36e97fee8601000000'}}";
[*] DBObject query = (BasicDBObject) JSON.parse(strJson);
[*]
[*] DBCursor myCur = myColl.find(query);
[*] while(myCur.hasNext()){
[*] myStr=myStr+myCur.next().toString();
[*] }
[*]
[*] } catch (UnknownHostException e){
[*] e.printStackTrace();
[*] }
[*] return myStr;
[*] }
页:
[1]