Đối với những người quan tâm, tôi đã tìm thấy giải pháp cho vấn đề của mình. Hóa ra là định dạng BSON có thể được phân tích cú pháp giống như JSON bằng cách sử dụng trình điều khiển GSON của Google. Một phần khó khăn mà tôi phải giải quyết là tìm cách lưu trữ các trường lồng nhau trong lớp mẫu của tôi. Cách để cho phép GSON phân tích cú pháp các tài liệu lồng nhau là khai báo các lớp tĩnh bên trong trong lớp mẫu của bạn. Đây là một ví dụ:
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
}
vv
Khai báo lớp mẫu theo khuôn khổ trên cho phép tôi dễ dàng phân tích cú pháp định dạng của MongoDB bằng cách sử dụng một vài dòng mã từ thư viện GSON. Xin lưu ý rằng tôi đã nối "\ n" vào mỗi mục nhập khi trả lại dữ liệu từ dịch vụ web của tôi để tách từng tài liệu trong phản hồi BSON của Mongo:
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();
}