För de intresserade hittade jag lösningen på mitt problem. Det visar sig att BSON-formatet kan tolkas precis som JSON med Googles GSON-drivrutin. Den enda knepiga delen som jag var tvungen att ta itu med var att hitta ett sätt att lagra kapslade fält i min mallklass. Sättet att tillåta GSON att tolka kapslade dokument är att deklarera statiska inre klasser i din mallklass. Här är ett exempel:
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.
Genom att deklarera mallklassen efter ramverket ovan kunde jag enkelt analysera MongoDB:s formatering med några rader kod från GSON-biblioteket. Observera att jag sammanfogade ett "\n" till varje post när jag returnerade data från min webbtjänst för att separera varje dokument i Mongos BSON-svar:
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();
}