2015-04-01 3 views
1

Я получаю график JSON (полезная нагрузка) от клиента, поэтому в веб-api я получаю JsValue. Я просто хочу принять это, украсить его несколькими полями и сохранить его в Монго. Что-то вроде этого:эффективный способ преобразования playframework JsValue в MongoDBObject

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, у меня есть два допустимых типизированных объекта, и я должен использовать нетипизированный промежуточный формат для перехода от одного к другому.

+0

Очень родственный, но заканчивается тем же местом, что и вы: http://stackoverflow.com/questions/11987071/how-to-convert-casbah-mongodb-list-to-json-in-scala-play –

ответ

0

Если вы хотите сохранить график как строку «полезная нагрузка», вы можете это сделать.

Возможно, вы захотите рассмотреть вопрос об использовании ReactiveMongo вместо Casbah, а также Play-ReactiveMongo, который обеспечивает возможность прямого доступа к JSON. Я не использовал Play-ReactiveMongo.

Смежные вопросы