将mongo文档的DateField反序列化为java.util.Date

时间:2015-12-09 05:41:59

标签: mongodb scala json4s mongo-scala-driver jackson-module-scala

我在我的一个新项目中使用mongo-scala组合,它需要使用日期字段反序列化mongo文档

mongo文档示例

{
    "_id" : ObjectId("56603577616e082f559da3d9"),
    "type" : "rule",
    "startTime" : ISODate("2004-09-04T17:05:22.000Z"),
    "finishTime" : ISODate("2005-09-04T18:06:22.000Z"),
    "status" : "success"
}

我正在使用mongo-scala-driver查询集合,而document.toJson()正在将json字符串视为

{ 
"_id" : { "$oid" : "56603577616e082f559da3d9" }, 
"type" : "rule", 
"startTime" : { "$date" : 1094317522000 },
"finishTime" : { "$date" : 1125857182000 }, 
"status" : "success" 
}

我需要将这个json字符串反序列化为我的scala案例类

case class Joblog (
                     _id : ObjectId,
                     type : String,
                     startTime: java.util.Date,
                     finishTime: java.util.Date,
                     status:String
)

我在解析json

后使用json4s-mongo来提取scala对象
parse(jobdoc.toJson()).extract[JobLog]

错误返回

Do not know how to convert JObject(List(($date,JInt(1094317522000)))) into class java.util.Date

进一步观察我注意到json4s-mongo不处理$ date nameField而是处理$ dt namefield。

enter image description here

Above方法适用于ObjectId和String数据类型,但仅为DateField提供错误。

反序列化DateField的正确方法是什么?

0 个答案:

没有答案