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.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage