我將具有java.util.Date字段的對象保存到MongoDB 3.2實例中。將MongoDB 3中的文檔對象轉換爲POJOS
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(myObject);
collection.insertOne(Document.parse(json));
字符串包含:
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
"captured": 1454549266735
然後我從MongoDB實例閱讀: com.fasterxml.jackson.databind.JsonMappingException : 無法反序列化java.util.Date的實例進行START_OBJECT令牌
我看到,創建的JSON字符串 「document.toJson()」 中載:
"captured": {
"$numberLong": "1454550216318"
}
,而不是什麼最初(「捕獲」:1454549266735) MongoDB文檔說他們開始使用「MongoDB擴展Json」。我試了傑克遜1和2來解析它 - 沒有運氣。
將MongoDB 3提供的Document對象轉換爲Java POJO最簡單的方法是什麼?也許我可以跳到JSON()一步?
我試過mongojack - 那個不支持MongoDB3。
看着MongoDB文檔頁面上列出的其他POJO映射器 - 它們都需要將自定義註釋放到Java類中。
com.mongodb.util.JSON.serialize(文檔)在新版本中被棄用 – Gilian