我是Scala和Play的新手,我要求這個簡單示例的幫助。我試圖自己尋找解決方案,但我沒有成功。 我正在嘗試從掌握Scala書籍的播放框架,關於擴展Json解析器(第29-30頁)的例子。Scala玩Json隱式寫入類型不匹配
我使用的環境是:
斯卡拉:2.11.7 播放:2.5.8 激活:1.3.10
的代碼是:
case class Subscription(emailId: String, interval: Long)
在控制器:
import play.api.libs.json.Json
import play.api.libs.json.JsValue
import play.api.libs.json.Writes
.....
val parseAsSubscription = parse.using {
request =>
parse.json.map {
body =>
val emailId:String = (body \ "emailId").as[String]
val fromDate:Long = (body \ "fromDate").as[Long]
Subscription(emailId, fromDate)
}
}
implicit val subWrites:Writes[Subscription] = Json.writes[Subscription]
def getSub = Action(parseAsSubscription) {
request =>
val subscription: Subscription = request.body
Ok(Json.toJson(Subscription))
}
該行:Ok(Json.toJson(Subscription))
giv es an error
找不到類型爲models.ubscription.type的Json序列化程序。嘗試 實現此類型的隱式Writes或Format。
這很奇怪,因爲Writes對象定義在上面的一行。因此,我試圖將它傳遞給方法的toJSON明確:
Ok(Json.toJson(Subscription)(subWrites))
它給了我一個不同的錯誤,這部分解釋了爲什麼現有的寫入對象不適合:
類型不匹配;
實測值: play.api.libs.json.Writes [models.Subscription]
需要: play.api.libs.json.Writes [models.Subscription.type]
然而,我不不明白這個錯誤的性質以及什麼是models.Subscription.type
。 我曾經在另一個例子中做過類似的事情,它工作得很好。 任何幫助將不勝感激。
非常感謝,@Eric。這真是我身邊的一個愚蠢的錯誤 –
不客氣!愚蠢的錯誤是難以捉摸的:) – Eric