Dla zainteresowanych znalazłem rozwiązanie mojego problemu. Okazuje się, że format BSON można analizować tak samo jak JSON przy użyciu sterownika Google GSON. Jedyną trudną częścią, z którą musiałem sobie poradzić, było wymyślenie sposobu przechowywania zagnieżdżonych pól w mojej klasie szablonów. Sposobem na umożliwienie GSON analizowania zagnieżdżonych dokumentów jest zadeklarowanie statycznych klas wewnętrznych w klasie szablonu. Oto przykład:
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
}
itp.
Zadeklarowanie klasy szablonu zgodnie z powyższym frameworkiem pozwoliło mi łatwo przeanalizować formatowanie MongoDB za pomocą kilku linijek kodu z biblioteki GSON. Zwróć uwagę, że połączyłem "\n" z każdym wpisem podczas zwracania danych z mojego serwisu internetowego, aby oddzielić każdy dokument w odpowiedzi 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();
}