Frage

I Java-Anwendung, die Daten aus externer App nimmt. Eingehende JSONs sind in Strings. Ich möchte analysieren, dass Strings und BSON Objekte erstellen.

Unfortunate ich nicht API für die in Java BSON Implementierung finden.

habe ich, dass externe Parser für wie Gson?

War es hilfreich?

Lösung

Der einfachste Weg zu sein scheint, eine JSON-Bibliothek zu verwenden, um die JSON-Strings in ein Map zu analysieren und verwenden Sie dann die putAll Methode diese Werte in einem BSONObject zu setzen.

diese Antwort gezeigt, wie mit Jackson einen JSON-String in eine Map zu analysieren.

Andere Tipps

Offizielle MongoDB Java-Treiber kommt mit Utility-Methoden für JSON BSON Parsen und Serialisieren BSON zu JSON.

import com.mongodb.DBObject;
import com.mongodb.util.JSON;

DBObject dbObj = ... ;
String json = JSON.serialize( dbObj );
DBObject bson = ( DBObject ) JSON.parse( json );

Der Fahrer kann hier gefunden werden: https://mongodb.github.io/mongo- java-Treiber /

... Und da 3.0.0 können Sie:

import org.bson.Document;

final Document doc = new Document("myKey", "myValue");
final String jsonString = doc.toJson();
final Document doc = Document.parse(jsonString);

Offizielle Dokumente:

einen String json zu BSON konvertieren, zu tun:

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

ein BSON zu json konvertieren, zu tun:

import org.bson.BasicBSONDecoder;
import org.bson.BSONObject;

BasicBSONDecoder decoder = new BasicBSONDecoder();
BSONObject bsonObject = decoder.readObject(out);
String json_string = bsonObject.toString();

Mit Document.parse(String json) von org.bson.Document. Es gibt Document Objekt, welche Art von Bson ist.

Sie könnten daran interessiert sein bson4jackson Projekt, das Sie Jackson Datenbindung an die Arbeit verwenden können mit BSON (POJOs von BSON, Schreib als BSON erstellen) - vor allem, weil Jackson auch die Arbeit mit JSON. So ist es Umwandlung ermöglicht, wie Sie erwähnen, verwenden Sie einfach verschiedenen ObjectMapper instanstaces (eine, die mit JSON, andere mit BSON funktioniert).

Mit Jackson können Sie entweder mit voller POJOs (declare Struktur Sie wollen) oder mit einfachen Karten, Listen und so weiter. Sie müssen nur erklären, was zu binden gibt beim Lesen von Daten (beim Schreiben Art von Objekt definiert ist Sie passieren).

Sie werden die Antwort auf Ihre Frage in den Quellcode von https://github.com/mongodb/mongo/blob/master/src/mongo/db/jsobj.cpp Welche die BSON zu JSON Konvertierung hat.

Im Grunde Sachen wie

  • ObjectId("XXX") -> { "$oid" : "XXX" }
  • /XXX/gi -> { "$regex" : "XXX", "$options" : "gi" }

und so weiter ...

Ich würde vorschlagen, die toJson () und Parse (String) Methoden des BasicDBObject zu verwenden, da die JSON Utility-Klasse @Depricated wurde.

import com.mongodb.BasicDBObject;

public static BasicDBObject makeBsonObject(String json) {
    return BasicDBObject.parse(json);
}

public static String makeJsonObject(BasicDBObject dbObj) {
    return dbObj.toJson();
}

Ich bin nicht sicher über java aber der mongoDB CPP-Treiber hat einen Funktionstyp

  

BSONObj fromjson (string)

, die eine BSONObj nach der Zeichenfolge zurück übergeben. Es sollte auch eine gleiche Funktion in Java sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top