使用Spring引導1.4.4.RELEASE,保存一個RequestBody
到的MongoDB如下:反序列化MongoDB的日期字段到Java POJO使用傑克遜
{
"startTime" : NumberLong("1483542955570"),
"startDate" : ISODate("2017-01-04T15:15:55.570Z"),
"endTime" : NumberLong("1483542955570"),
"endDate" : ISODate("2017-01-04T15:15:55.570Z")
}
雖然這個映射回一個Java POJO,我想的下面的代碼。
public <T> T getPOJOFromMongoDocument(Document resourceDocument, Class<T> clazz) {
String serialize = JSON.serialize(resourceDocument);
return objectMapper.readValue(serialize,
clazz);
}
連載已日期字段返回如下
"startDate" : { "$date" : "2017-01-04T15:15:55.570Z"}
由於$date
,傑克遜ObjectMapper
解析期間返回以下異常:
java.lang.RuntimeException: Error parsing mongoDoc to Pojo : errorMessage : {Can not deserialize instance of java.util.Date out of START_OBJECT token at [Source: {
"startTime": 1483542955570,
"startDate": {
"$date": "2017-01-04T15:15:55.570Z"
},
"endTime": 1483542955570,
"endDate": {
"$date": "2017-01-04T15:15:55.570Z"
}}; line: 1, column: 381] (through reference chain: com.gofynd.engine.mongo.models.RuleWithDataVO["validity"]->com.gofynd.engine.mongo.models.ValidityVO["startDate"])}
有沒有辦法解決這個問題,而無需使用ODM?
但是這需要對Java數據結構進行更改。不會是一個定製的傑克遜(德)序列化器更好的解決方案? – Robert