ReactiveMongo 的 JSON 功能为某些 MongoDB 数据类型(如和)生成对象(JsObject
用 play-json 的说法)而不是标量。例如,你会得到这样的 JSON:BSONObjectID
BSONDateTime
{
"_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]) }
)
我怎样才能做到这一点?