反序列化MongoDB BSON

我试图从REST服务中获取响应,该服务查询MongoDB的实例并将响应解析为Java对象。 Web服务返回MIME类型为html的响应,并使用换行符分隔返回的每个记录(尽管我可以调整服务返回的内容)。 将BSON响应转换为Java对象的最简单/最有效的方法是什么? 我已经用Java创建了一个模板类来存储数据。

提前致谢!

编辑:一位同事建议我在webservice本身使用MongoDB Java驱动程序的BSON解析实用程序,然后返回一个格式良好的HTML字符串。 这仍然让我在我的应用程序中进行解析,但暂时将作为一种解决方法。 仍在寻找一种方法来轻松反序列化对Java对象的BSON响应。

对于那些感兴趣的人,我找到了解决问题的方法。 事实certificate,使用Google的GSON驱动程序可以像使用JSON一样解析BSON格式。 我必须处理的一个棘手的部分是想出一种在我的模板类中存储嵌套字段的方法。 允许GSON解析嵌套文档的方法是在模板类中声明静态内部类。 这是一个例子:

public BSONObject { // Private fields private int foo; private String bar; // Constructors public BSONObject() {} // Static inner subclasses private Widget widget; private Duck quack; // Getters & Setters for outer class public int getFoo() {...} public String getBar() {...} public Widget getWidget() {...} public Duck getDuck() {...} // Static inner class declarations public static Widget { // include vars & getters/setters } 

等等

按照上面的框架声明模板类允许我使用GSON库中的几行代码轻松解析MongoDB的格式。 请注意,当我从webservice返回数据时,我将每个条目的“\ n”连接起来,以便将Mongo的BSON响应中的每个文档分开:

 public String getNestedField() { Gson gson = new Gson(); String [] split = response.split("\n"); JsonParser p = new JsonParser(); String json = split[0]; BSONObject b = gson.fromJson(p.parse(json), BSONObject.class); return b.getWidget().getField(); }