MongoDB "NumberLong/$numberLong" Problem während der Konvertierung zurück zu Java-Objekt
Ich bin eine json-das ist somethink wie {"Header" : {"name" : "TestData", "contactNumber" : 8019071740}}
Wenn ich legen Sie diese zu mongoDB es wird so etwas wie
{"_id" : ObjectId("58b7e55097989619e4ddb0bb"),"Header" : {"name" : "TestData","contactNumber" : NumberLong(8019071743)}
Wenn ich diese Daten Lesen, zurück und versuchen, zu konvertieren von java-Objekt mit Gson es wirft Ausnahme com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a long but was BEGIN_OBJECT at line 1 column 109 path $.Header.contactNumber
Habe ich gefunden diese, Aber ich Frage mich, ob ich haben sehr komplexe json-Struktur, dann könnte ich verändern müssen viele json-Knoten in diesem Ansatz.
Tun, wer hat eine bessere alternativen auf dieser.
Bearbeiten:1
Ich lese Abfragen und konvertieren von json als unten
Document MongoDocument = mycollection.find(searchCondition);
String resultJson = MongoDocument.toJson();
Gson gson = new Gson();
Model model= gson.fromJson(resultJson, ItemList.class);
- Können Sie fügen Sie den code, wo Sie sind, die Daten zu Lesen ?
- Den code Hinzugefügt Spinett
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werfen Sie einen Blick auf: Umwandlung von Dokument-Objekten in MongoDB 3 POJOS
Ich hatte das gleiche problem. Der workaround mit com.mongodb.util.JSON.serialize(document) funktioniert der trick.
Mongo db verwendet Bson-format mit seinen eigenen Arten, die folgt json-standards, aber es kann nicht analysiert werden, von json-Bibliothek, ohne das schreiben der benutzerdefinierten wrapper/codec.
Können Sie die Verwendung von third-party-framework/plugins zu machen die Bibliothek kümmern sich um die Umwandlung zwischen Dokument und pojo.
Wenn das nicht eine option für Sie ist, müssen Sie die Zuordnung selbst.
Können wir folgenden code verwenden: