JSON 本体を受け取るコントローラーがあります。フィールドの 1 つはフォームの Date ですyyyy-mm-dd
。私がやりたいことは、このフィールドを BSONDateTime に適した形式に変換し、ReactiveMongo に挿入を実行させることです。
私は次のように思います:
((__ \ 'myDate).json.pickBranch(Reads.of[JsString] andKeep toDateFormat))
この変換を行うにはどうすればよいですか?
JSON 本体を受け取るコントローラーがあります。フィールドの 1 つはフォームの Date ですyyyy-mm-dd
。私がやりたいことは、このフィールドを BSONDateTime に適した形式に変換し、ReactiveMongo に挿入を実行させることです。
私は次のように思います:
((__ \ 'myDate).json.pickBranch(Reads.of[JsString] andKeep toDateFormat))
この変換を行うにはどうすればよいですか?
進歩への一歩...次のようにして、日付文字列をJsNumberに取得して、リアクティブmongoが処理できると信じています。
((__ \ 'myDate).json.update(Reads.of[DateTime].map{ x => JsNumber(x.getMillis)}) )
Play には、Reads クラスで Date および DateTime オブジェクトを処理するための暗黙の要素がいくつかあることがわかりました。
アップデート:
これをPlay-ReactiveMongo暗黙的 BSON コンバーターで動作させるには、次のように「$date」キーを使用して JsObject を作成する必要があります。
((__ \ 'tripDate).json.pickBranch(Reads.of[DateTime].map{ x => Json.obj("$date"->JsNumber(x.getMillis))}) )