Ich speichere ein Objekt mit einem java.util.Date-Feld in eine MongoDB 3.2-Instanz.Konvertieren von Dokumentobjekten in MongoDB 3 in POJOS
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(myObject);
collection.insertOne(Document.parse(json));
der String enthält:
"captured": 1454549266735
dann habe ich es aus dem MongoDB Beispiel lesen:
final Document document = collection.find(eq("key", value)).first();
final String json = document.toJson();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
xx = mapper.readValue(json, MyClass.class);
die Deserialisierung fehlschlägt:
java.lang.RuntimeException: com.fasterxml.jackson.databind.JsonMappingException : Kann nicht Instanz java.util.Date aus START_OBJECT Token deserialisieren
Ich sehe, dass die JSON-String von "document.toJson()" erstellt wurde, enthält:
"captured": {
"$numberLong": "1454550216318"
}
statt dessen, was war Dort ursprünglich ("captured": 1454549266735) MongoDB-Dokumente sagen, dass sie "MongoDB Extended Json" zu verwenden begannen. Ich habe Jackson 1 und 2 ausprobiert, um es zu analysieren - kein Glück.
Was ist der einfachste Weg, um die von MongoDB 3 zur Verfügung gestellten Dokumentobjekte in Java POJOs umzuwandeln? vielleicht kann ich zu json() schritt ganz überspringen?
Ich versuchte Mongojack - das MongoDB3 nicht unterstützt.
Betrachtet mehrere andere POJO-Mapper, die auf der MongoDB-Dokumentseite aufgelistet sind - sie alle müssen ihre benutzerdefinierten Anmerkungen in Java-Klassen einfügen.
com.mongodb.util.JSON.serialize (Dokument) wurde in neuen Versionen veraltet – Gilian