Я сохраняю объект с полем java.util.Date в экземпляре MongoDB 3.2.
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(myObject);
collection.insertOne(Document.parse(json));
Строка содержит:
"captured": 1454549266735
то я прочитал его из экземпляра MongoDB:
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);
неудача десериализации:
java.lang.RuntimeException: com.fasterxml.jackson.databind.JsonMappingException: Невозможно десериализовать экземпляр java.util.Date из токена START_OBJECT
Я вижу, что строка json, созданная с помощью document.toJson(), содержит:
"captured": {
"$numberLong": "1454550216318"
}
вместо того, что было первоначально ( "захвачено": 1454549266735) MongoDB сообщает, что они начали использовать "MongoDB Extended Json". Я попробовал оба Джексона 1 и 2 разобрать его - не повезло.
Каков самый простой способ конвертировать те объекты Document, предоставленные MongoDB 3, в Java POJO? возможно, я могу вообще пропустить шаг toJson()?
Я попробовал mongojack - тот не поддерживает MongoDB3.
Посмотрел на пару других маркеров POJO, перечисленных на странице документов MongoDB - все они требуют размещения своих пользовательских аннотаций для классов Java.