小编muk*_*rma的帖子

使用Jackson将MongoDB日期字段反序列化为Java POJO

使用Spring Boot 1.4.4.RELEASE,已将一个保存RequestBody到MongoDB,如下所示:

{
    "startTime" : NumberLong("1483542955570"),
    "startDate" : ISODate("2017-01-04T15:15:55.570Z"),
    "endTime" : NumberLong("1483542955570"),
    "endDate" : ISODate("2017-01-04T15:15:55.570Z")
}
Run Code Online (Sandbox Code Playgroud)

在将其映射回Java POJO时,我正在尝试以下代码.

public <T> T getPOJOFromMongoDocument(Document resourceDocument, Class<T> clazz) {
        String serialize = JSON.serialize(resourceDocument);
        return objectMapper.readValue(serialize,
                                      clazz);
}
Run Code Online (Sandbox Code Playgroud)

serialize具有如下返回的日期字段

"startDate" : { "$date" : "2017-01-04T15:15:55.570Z"}
Run Code Online (Sandbox Code Playgroud)

由于$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, …
Run Code Online (Sandbox Code Playgroud)

java spring json mongodb jackson

6
推荐指数
1
解决办法
3295
查看次数

标签 统计

jackson ×1

java ×1

json ×1

mongodb ×1

spring ×1