sql >> Databasteknik >  >> NoSQL >> MongoDB

Deserialisering av MongoDB BSON

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();
}



  1. Redis-aviseringar:Få nyckel och värde vid utgång

  2. Mongoose byt namn på samling

  3. Låser mongodump databasen?

  4. Eclipselink med MongoDB java.lang.ClassCastException