我正在使用MongoDB和Java驱动程序开发Java应用程序。
我需要将BasicDBObject解析为我自己的代码对象,我不知道是否有自动开发的方法。
是否可以从BasicDBObject解析为JSON String?然后,我可以从JSON String解析为我自己的Object,例如使用GSON库。像
这样的东西 BasicDBObject object;
String myJSONString = object.toString();
Gson gson = new Gson();
MyOwnObject myObject = gson.fromJson(myJSONString, MyOwnObject.class);
我不想在我的代码中添加复杂的内容,我也不想添加更多的外部库。我不想添加Gson库或其他。
任何想法?没有外部库可以做到这一点吗? 谢谢!
答案 0 :(得分:1)
您可以查看API:只需致电object#toString()
(http://api.mongodb.org/java/2.0/com/mongodb/BasicDBObject.html#toString())。
答案 1 :(得分:1)
您可以使用Groovy with gmongo
库,那里有很多方便的工具用于此类投射。
如果语言更改不适合您,请编写您自己的基于反射的映射器。如果POJO足够简单,那么映射器应该非常简单。
答案 2 :(得分:0)
这是我的问题的正确答案
来自http://docs.mongodb.org/ecosystem/tutorial/use-java-dbobject-to-perform-saves/
例如,假设有一个名为Tweet的类他们想要保存:
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);