1

ReactiveMongo 的 JSON 功能为某些 MongoDB 数据类型(如和)生成对象(JsObject用 play-json 的说法)而不是标量。例如,你会得到这样的 JSON:BSONObjectIDBSONDateTime

{
   "_id" : {
      "$oid" : "5de32e618f02001d8d521757"  //BSONObjectID
   },
   "createdAt" : {
      "$date" : 15751396221447 //BSONDateTime
   }
}

除了处理起来很麻烦之外,我更愿意不公开将 MongoDB 问题泄露给 REST 客户端的 JSON。

棘手的是这些值出现在整个树中,因此我需要编写一个足够聪明的 Play JSON 转换器,以便在每个级别递归转换上述内容,如下所示:

{
   "id" : "5de32e618f02001d8d521757",
   "createdAt" : 15751396221447 
}

这样做的一个失败尝试BSONObjectID是这样的:

(JsPath \ "_id").json.update(
    JsPath.read[JsObject].map{ o => o ++ Json.obj( "id" -> (o \ f"$$oid").as[String]) }
)

我怎样才能做到这一点?

4

0 回答 0