Umwandlung von Dokumentenobjekten in MongoDB 3 nach POJOS
Ich speichere ein Objekt mit einem java.util.Date-Feld in einer MongoDB 3.2-Instanz.
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 der MongoDB-Instanz gelesen:
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 schlägt fehl:
java.lang.RuntimeException: com.fasterxml.jackson.databind.JsonMappingException: Instanz von java.util.Date kann nicht aus dem START_OBJECT-Token deserialisiert werden
Ich sehe, dass die von "document.toJson ()" erstellte JSON-Zeichenfolge Folgendes enthält:
"captured": {
"$numberLong": "1454550216318"
}
anstelle dessen, was es ursprünglich gab ("capture": 1454549266735) MongoDB-Dokumente geben an, dass sie "MongoDB Extended Json" verwendet haben. Ich habe versucht, Jackson 1 und 2 zu analysieren - kein Glück.
Was ist der einfachste Weg, die von MongoDB 3 bereitgestellten Document-Objekte in Java POJOs zu konvertieren? Vielleicht kann ich zu Json () springen?
Ich habe Mongojack ausprobiert - das unterstützt MongoDB3 nicht.
Blick auf einige andere POJO-Mapper, die auf der MongoDB-Dokumentseite aufgelistet sind - für alle müssen ihre benutzerdefinierten Anmerkungen in Java-Klassen eingefügt werden.