Saya memiliki Java aplikasi yang mengambil data dari aplikasi eksternal. Masuk JSONs dalam String. Saya ingin mengurai bahwa String dan membuat BPUTRA benda-benda.
Beruntung saya dapat't menemukan API untuk yang di pulau Jawa's BPUTRA implementasi.
Apakah saya harus menggunakan eksternal parser untuk yang suka GSON?
Resmi MongoDB Jawa Driver dilengkapi dengan utilitas metode untuk parsing JSON untuk BPUTRA dan serialisasi BPUTRA untuk JSON.
import com.mongodb.DBObject;
import com.mongodb.util.JSON;
DBObject dbObj = ... ;
String json = JSON.serialize( dbObj );
DBObject bson = ( DBObject ) JSON.parse( json );
Driver dapat ditemukan di sini: https://mongodb.github.io/mongo-java-driver/
... Dan, sejak 3.0.0, anda dapat:
import org.bson.Document;
final Document doc = new Document("myKey", "myValue");
final String jsonString = doc.toJson();
final Document doc = Document.parse(jsonString);
Resmi docs:
Untuk mengkonversi string json untuk bputra, lakukan:
import org.bson.BasicBSONEncoder;
import org.bson.BSONObject;
BSONObject bson = (BSONObject)com.mongodb.util.JSON.parse(string_json);
BasicBSONEncoder encoder = new BasicBSONEncoder();
byte[] bson_byte = encoder.encode(bson);
Untuk mengkonversi bputra untuk json, lakukan:
import org.bson.BasicBSONDecoder;
import org.bson.BSONObject;
BasicBSONDecoder decoder = new BasicBSONDecoder();
BSONObject bsonObject = decoder.readObject(out);
String json_string = bsonObject.toString();
Anda mungkin tertarik pada bson4jackson proyek, yang memungkinkan anda untuk menggunakan Jackson data binding untuk bekerja dengan BPUTRA (membuat POJOs dari BPUTRA, menulis sebagai BPUTRA) -- terutama karena Jackson juga bekerja dengan JSON. Sehingga akan memungkinkan konversi seperti yang anda sebutkan, hanya menggunakan berbagai ObjectMapper instanstaces (salah satu yang bekerja dengan JSON, lain dengan BPUTRA).
Dengan Jackson anda dapat bekerja dengan penuh POJOs (menyatakan struktur yang anda inginkan) atau dengan Peta sederhana, Daftar dan sebagainya. Anda hanya perlu untuk menyatakan apa yang harus ketik untuk mengikat ketika membaca data (saat penulisan, jenis didefinisikan oleh objek yang lulus).
Anda'll menemukan jawaban untuk pertanyaan anda dalam kode sumber https://github.com/mongodb/mongo/blob/master/src/mongo/db/jsobj.cpp Yang telah BPUTRA untuk JSON konversi.
Pada dasarnya, hal-hal seperti
ObjectId("XXX")
-> { "$oid" : "XXX" }
/XXX/gi
-> { "$regex" : "XXX", "$pilihan" : "gi" }
dan sebagainya...
Saya akan menyarankan menggunakan toJson() dan mengurai(String) metode BasicDBObject, karena JSON kelas utilitas telah @Depricated.
import com.mongodb.BasicDBObject;
public static BasicDBObject makeBsonObject(String json) {
return BasicDBObject.parse(json);
}
public static String makeJsonObject(BasicDBObject dbObj) {
return dbObj.toJson();
}