MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Deserialisasi MongoDB BSON

Bagi mereka yang tertarik, saya menemukan solusi untuk masalah saya. Ternyata format BSON bisa diurai seperti JSON menggunakan driver GSON Google. Satu bagian rumit yang harus saya tangani adalah mencari cara untuk menyimpan bidang bersarang di kelas templat saya. Cara untuk mengizinkan GSON mengurai dokumen bersarang adalah dengan mendeklarasikan kelas dalam statis di kelas template Anda. Ini contohnya:

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
  }

dll.

Mendeklarasikan kelas template mengikuti kerangka kerja di atas memungkinkan saya untuk dengan mudah mengurai pemformatan MongoDB menggunakan beberapa baris kode dari pustaka GSON. Harap perhatikan bahwa saya menggabungkan "\n" ke setiap entri saat mengembalikan data dari layanan web saya untuk memisahkan setiap dokumen dalam respons BSON 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();
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Di Morphia bagaimana saya bisa memperbarui satu Objek yang disematkan di dalam ArrayList

  2. Metode instance luwak tidak ditentukan

  3. Bagaimana cara mengatasi kurangnya transaksi di MongoDB?

  4. Mongoid, bagaimana cara memesan_oleh melalui asosiasi references_one (dan asosiasi selanjutnya)?

  5. Sertakan Tahapan Pipa Agregasi secara Kondisional