我在我的一个新项目中使用 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 。
上述方法对于 ObjectId 和 String 数据类型非常有效,但仅对 DateField 给出错误。
反序列化 DateField 的正确方法是什么?