反序列化 MongoDB BSON

2024-03-18

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

提前致谢!

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


对于那些感兴趣的人,我找到了解决我的问题的方法。事实证明,BSON 格式可以像 JSON 一样使用解析谷歌的 GSON 驱动程序。 http://sites.google.com/site/gson/我必须处理的一个棘手部分是找到一种在模板类中存储嵌套字段的方法。允许 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
  }

etc.

按照上述框架声明模板类使我能够使用 GSON 库中的几行代码轻松解析 MongoDB 的格式。请注意,当从我的 web 服务返回数据时,我将“\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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反序列化 MongoDB BSON 的相关文章

随机推荐