将playframework JsValue转换为MongoDBObject的有效方法

将playframework JsValue转换为MongoDBObject的有效方法,mongodb,scala,playframework,casbah,Mongodb,Scala,Playframework,Casbah,我从客户机接收一个JSON图负载,因此在web api上我得到一个JsValue。我只想拿着它,用几块地装饰一下,然后把它存放在Mongo。大概是这样的: case class Plan(_id: ObjectId, name: String, payload: JsValue) { "_id" = 12345, "name" : "test model", "payload" : {a JSON graph} } 从JsValue到数据库 builder += "payload

我从客户机接收一个JSON图负载,因此在web api上我得到一个JsValue。我只想拿着它,用几块地装饰一下,然后把它存放在Mongo。大概是这样的:

case class Plan(_id: ObjectId, name: String, payload: JsValue)

{
  "_id" = 12345,
  "name" : "test model",
  "payload" : {a JSON graph}
}
从JsValue到数据库

builder += "payload" -> JSON.parse(Json.stringify(model.payload))
从数据库返回到JsValue

payload = Json.parse(dbo.as[MongoDBList]("payload").toString))

虽然可以从JsValue->String->MongoDBObject进行转换,但我有两个有效的类型化对象,必须使用非类型化的中间格式从一个对象转换到另一个对象。

如果您只想将图形存储为字符串负载,当然可以这样做


您可能想考虑使用CasBah,而不是直接提供JSON能力。我没有使用Play ReactiveMongo。

非常相关,但最终与您位于同一位置: