gpt4 book ai didi

java - 反序列化 MongoDB BSON

转载 作者:可可西里 更新时间:2023-11-01 09:16:00 24 4
gpt4 key购买 nike

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

提前致谢!

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

最佳答案

对于那些感兴趣的人,我找到了解决问题的方法。事实证明,使用 Google's GSON driver. 可以像 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 的格式。请注意,当从我的网络服务返回数据时,我将一个“\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();
}

关于java - 反序列化 MongoDB BSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com