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

时间:2015-04-01 14:28:51

标签: 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.parse(Json.stringify(model.payload))

从数据库返回到JsValue ......

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

虽然它适用于JsValue - >字符串 - > MongoDBObject,我有两个有效的类型对象,我必须使用无类型的中间格式从一个到另一个。

1 个答案:

答案 0 :(得分:0)

如果您只想将图形存储为字符串“payload”,您当然可以这样做。

您可能需要考虑使用ReactiveMongo代替Casbah,以及提供直接JSON功能的Play-ReactiveMongo。我没有使用Play-ReactiveMongo。