如何JSON将日期转换为BSONDateTime?

时间:2013-04-19 18:18:02

标签: mongodb scala playframework playframework-2.1

我有一个接收JSON主体的控制器。其中一个字段是yyyy-mm-dd形式的日期。我想要做的是将此字段转换为适合BSONDateTime的格式,并让ReactiveMongo执行插入。

我认为:

((__ \ 'myDate).json.pickBranch(Reads.of[JsString] andKeep toDateFormat))

我该如何进行这种转变?

1 个答案:

答案 0 :(得分:3)

迈向进步的一步......我相信我可以采取以下措施将日期字符串转换为JsNumber,然后响应mongo可以处理:

((__ \ 'myDate).json.update(Reads.of[DateTime].map{ x => JsNumber(x.getMillis)}) )

事实证明,Play在Reads类中处理Date和DateTime对象有一些暗示..所以Reads.of [DateTime]可以工作。

更新:

要使用Play-ReactiveMongo隐式BSON转换器,您需要使用“$ date”键创建一个JsObject,如下所示:

((__ \ 'tripDate).json.pickBranch(Reads.of[DateTime].map{ x => Json.obj("$date"->JsNumber(x.getMillis))}) )