![](/img/trans.png)
[英]No Json serializer as JsObject found for type play.api.libs.json.JsObject
[英]No Json serializer as JsObject found for type play.api.libs.json.JsValue
我正在嘗試將我的項目從使用play2-reactivemongo
版本0.10.5.0.akka23
到使用版本0.11.7.play23
。 我已經添加了以下導入來解決此問題中解決的問題 :
import play.modules.reactivemongo.json._
在以前的版本中,以下代碼有效:
val updateEntity = Json.obj("_id" -> Json.obj("$oid" -> id))
val entity = Json.parse(stringJson)
collection.update(updateEntity, entity)
但是,使用新版本時,第三行給出了編譯錯誤:
[error] No Json serializer as JsObject found for type play.api.libs.json.JsValue. Try to implement an implicit OWrites or OFormat for this type.
[error] collection.update(updateEntity, entity)
[error] ^
我嘗試引入隱式OWriter
:
implicit val toJsObject: OWrites[JsValue] = OWrites.apply(_.as[JsObject])
但這帶來了隱式聲明沖突:
[error] ambiguous implicit values:
[error] both value toJsObject of type play.api.libs.json.OWrites[play.api.libs.json.JsValue]
[error] and object JsObjectDocumentWriter in trait ImplicitBSONHandlers of type play.modules.reactivemongo.json.JsObjectDocumentWriter.type
[error] match expected type collection.pack.Writer[play.api.libs.json.JsObject]
[error] collection.update(updateEntity, entity)
[error] ^
將第二行更改為
val entity = Json.parse(stringJson).as[JsObject]
解決了這個問題,但是我在代碼中有很多這樣的想法,我希望有一個更簡單的解決方案。
也剛被這個咬住了。 訣竅是刪除
import play.modules.reactivemongo.json._
而是使用
import reactivemongo.play.json._
play.modules版本不提供身份OWriter。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.