5

新しいプロジェクトの 1 つで mongo-scala の組み合わせを使用していますが、日付フィールドを使用して 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
)

json4s-mongoを使用して、json を解析した後に 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 を逆シリアル化する正しい方法は何ですか?

4

0 に答える 0