Voor de geïnteresseerden, ik heb de oplossing voor mijn probleem gevonden. Het blijkt dat het BSON-formaat net als JSON kan worden geparseerd met behulp van Google's GSON-stuurprogramma. Het enige lastige deel waar ik mee te maken had, was het bedenken van een manier om geneste velden in mijn sjabloonklasse op te slaan. De manier om GSON geneste documenten te laten parseren, is door statische innerlijke klassen in uw sjabloonklasse te declareren. Hier is een voorbeeld:
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
}
enz.
Door de sjabloonklasse volgens het bovenstaande raamwerk te declareren, kon ik de opmaak van MongoDB gemakkelijk ontleden met behulp van een paar regels code uit de GSON-bibliotheek. Houd er rekening mee dat ik een "\n" aan elk item heb toegevoegd bij het retourneren van gegevens van mijn webservice om elk document in de BSON-reactie van Mongo te scheiden:
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();
}