2014-03-04 24 views
0

我正在開發使用MongoDB和Java-driver的Java應用程序。如何將BasicDBObject解析爲其他對象

我需要將BasicDBObject解析爲自己的代碼對象,我不知道是否有自動開發的方法。

是否可以從BasicDBObject解析爲JSON字符串?然後,我可以從JSON字符串解析到我自己的對象,例如使用GSON庫。像

BasicDBObject object; 
    String myJSONString = object.toString(); 
    Gson gson = new Gson(); 
    MyOwnObject myObject = gson.fromJson(myJSONString, MyOwnObject.class); 

而我不想添加複雜的我的代碼,我也不添加更多的extern庫。我不想添加Gson庫或其他。

任何想法??沒有外部庫可以做到這一點? 謝謝!

+1

可以使用嗎啡爲宗旨:http://architects.dzone.com/articles/using-morphia-map-java-objects –

+0

謝謝,@kocko我會考慮你的意見 – jjmartinez

+0

這很不清楚。你的目的是什麼?你想達到的目標究竟是什麼?迄今爲止,你並沒有真正說出你真正想做的事情。至於「沒有外部圖書館」,對於第一個「外部圖書館」提出的建議感謝了什麼? –

回答

0

這是正確回答我的問題

http://docs.mongodb.org/ecosystem/tutorial/use-java-dbobject-to-perform-saves/

例如,假設一個有一類名爲Twitter微博分享他們想節省:

public class Tweet implements DBObject { 
    /* ... */ 
} 

然後你就可以說:

Tweet myTweet = new Tweet(); 
myTweet.put("user", userId); 
myTweet.put("message", msg); 
myTweet.put("date", new Date()); 

collection.insert(myTweet); 

當從中檢索到文檔時數據庫時,它會自動轉換爲DBObject。將它轉化成你的類的實例,使用DBCollection.setObjectClass():

collection.setObjectClass(Tweet.class); 

Tweet myTweet = (Tweet)collection.findOne(); 

如果由於某種原因,你想改變的消息,你可以簡單地採取鳴叫並保存更新回後場。

Tweet myTweet = (Tweet)collection.findOne(); 
myTweet.put("message", newMsg); 

collection.save(myTweet); 
1

您可以使用Groovy with gmongo庫,那裏有很多方便的工具用於這種轉換。

如果語言更改不適合您,請編寫您自己的基於反射的映射器。如果你的POJO足夠簡單,那麼映射器應該非常簡單。

+0

我不能改變語言:)。是的,我的POJO很簡單。所以我認爲我可以用我在問題中寫的方法來做。 – jjmartinez