2016-11-28 5 views
0

私はPlay、Scala、MongoDBを使ってプロジェクトを進めています。私はList[Datetime]をコレクションに保存したいので、私はそれのために必要があります。 Datetimeを保存するために、私はList [DateTime]のフォーマッタはscalaを再生します

implicit def dateFormat = { 
    val dateStandardFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS" 

    val dateReads: Reads[DateTime] = Reads[DateTime](js => 
    js.validate[JsObject].map(_.value.toSeq).flatMap { 
     case Seq(("$date", JsNumber(ts))) if ts.isValidLong => 
     JsSuccess(new DateTime(ts.toLong)) 
     case _ => 
     JsError(__, "validation.error.expected.$date") 
    } 
) 

    val dateWrites: Writes[DateTime] = new Writes[DateTime] { 
    def writes(dateTime: DateTime): JsValue = Json.obj("$date"-> dateTime.getMillis()) 
    } 

    Format(dateReads, dateWrites) 
} 

このフォーマッタを使用しますが、それは動作していない日付時刻のリストを格納します。助けをあらかじめありがとう

+0

MongoDateFormatsを使用することができ、あなたが取得している出力/スタックトレースを提供していただけますか? – manub

+0

「機能しない」とはどういう意味ですか? –

+0

私は上記のフォーマッタを使用して、このケースクラステスト(dates:List [Datetime]、....)のようなモデルを定義しました、暗黙のval dateModelFormat:OFormat [test] =( (JsPath \ "_id"私は暗黙的なvalを使用しようとしたとき – kittu

答えて

0

List [DateTime]の暗黙のjson WriterとReaderを作成する必要があります。あなたの例では、DateTime型のシリアライズと逆シリアル化のしか方法を定義していません。これをフォーマッタの下に追加すると、フレームワークにJSONify DateTimeのリストが表示されます。 下記の実施例を参照してください。

val dateStandardFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS" 

    val dateReads: Reads[DateTime] = Reads[DateTime](js => 
    js.validate[JsObject].map(_.value.toSeq).flatMap { 
     case Seq(("$date", JsNumber(ts))) if ts.isValidLong => 
     JsSuccess(new DateTime(ts.toLong)) 
     case _ => 
     JsError(__, "validation.error.expected.$date") 
    } 
) 

    val dateWrites: Writes[DateTime] = new Writes[DateTime] { 
    def writes(dateTime: DateTime): JsValue = Json.obj("$date" -> dateTime.getMillis()) 
    } 

    implicit def dateFormat = Format(dateReads, dateWrites) 

    implicit val listDateTimeFormat = Format(Reads.list[DateTime](dateReads), Writes.list[DateTime](dateWrites)) 

    val m = List(DateTime.now(), DateTime.now(), DateTime.now(), DateTime.now(), DateTime.now()) 

    println(Json.toJson(m).toString()) 
+0

datetimeの代わりにLongを返しますlistDateTimeFormat = Format(Json.reads [List [DateTime]) ]]、Json.writes [List [DateTime]] unapplyまたはunapplySeq関数が見つからないというエラーをスローしています [エラー]暗黙的なval書き込み= Json.writes [List [DateTime]] – kittu

+0

こんにちはKittu、私は最初の反応で小さな間違いをした –

関連する問題