Java 如何将BasicDBObject解析为其他对象

Java 如何将BasicDBObject解析为其他对象,java,json,mongodb,Java,Json,Mongodb,我正在使用MongoDB和Java驱动程序开发一个Java应用程序 我需要将一个BasicDBObject解析为我自己的代码对象,我不知道是否有一种自动开发的方法 是否可以将BasicDBObject解析为JSON字符串?然后,我可以将JSON字符串解析为我自己的对象,例如使用GSON库。差不多 BasicDBObject object; String myJSONString = object.toString(); Gson gson = new Gson();

我正在使用MongoDB和Java驱动程序开发一个Java应用程序

我需要将一个BasicDBObject解析为我自己的代码对象,我不知道是否有一种自动开发的方法

是否可以将BasicDBObject解析为JSON字符串?然后,我可以将JSON字符串解析为我自己的对象,例如使用GSON库。差不多

    BasicDBObject object;
    String myJSONString = object.toString();
    Gson gson = new Gson();
    MyOwnObject myObject = gson.fromJson(myJSONString, MyOwnObject.class);
我不想在代码中添加复杂的内容,也不想添加更多的外部库。我不想添加Gson库或其他

有什么想法吗??在没有外部库的情况下是否可以做到这一点??
谢谢

您可以看看API:只需调用
object#toString()
()。

您可以使用
Groovy和gmongo
库来实现这一点,您可以使用很多方便的工具来进行这种转换


如果语言更改不适合您,请编写自己的基于反射的映射器。如果你认为POJO足够简单,那么映射器应该非常简单。

这是我问题的正确答案

例如,假设有一个名为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()

如果出于某种原因,您想更改消息,只需在更新字段后获取该推文并将其保存回去即可

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

collection.save(myTweet);

你可以使用Morphia:谢谢,@kocko我会考虑你的评论,这是非常不清楚的。你的目的是什么?你想要达到的目标到底是什么?到目前为止,你还没有说出你真正想做的事情。至于“没有外部图书馆”,接受第一个“外部图书馆”建议的感谢有什么用?@NeilLunn我感谢第一个回答我不能用其他方式回答的人。我想在不使用任何外部库的情况下进行解析,因为我不知道是否可以使用MongoDB的java驱动程序进行解析。是的,我知道,但是还有其他方法可以做到这一点吗?我不知道您的问题是什么,您是否运行了上面的代码,并且没有得到所需的结果?是的,我不知道是否还有其他方法可以做到这一点。如果您不想使用GSON/外部库,显然您必须手工编写解析。好的,我不知道是否可以使用mongodb java驱动程序来完成这一点。谢谢我无法更改语言:)。是的,我的POJO很简单。所以我想我可以用我在问题中写的方法。
Tweet myTweet = (Tweet)collection.findOne();
myTweet.put("message", newMsg);

collection.save(myTweet);