Функциональные возможности
ReactiveMon go JSON генерируют объекты (JsObject
на языке play- json), а не скаляры для определенных типов данных MongoDB, таких как BSONObjectID
и BSONDateTime
. Например, вы получите JSON следующим образом:
{
"_id" : {
"$oid" : "5de32e618f02001d8d521757" //BSONObjectID
},
"createdAt" : {
"$date" : 15751396221447 //BSONDateTime
}
}
Помимо громоздкости, я бы предпочел не раскрывать JSON, который утечет проблемы MongoDB клиентам REST.
Хитрость заключается в том, что эти значения встречаются по всему дереву, поэтому мне нужно написать преобразователь 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]) }
)
Как я могу это сделать?