Scala Play Json 隐式写入类型不匹配
Scala Play Json implicit writes type mismatch
我是 Scala 和 Play 的新手,我想就这个简单的例子寻求帮助。我试图自己寻找解决方案,但没有成功。
我正在尝试从 Mastering Play Framework for Scala 一书中做这个例子,那本关于扩展 Json 解析器(第 29-30 页)的例子。
我使用的环境是:
斯卡拉: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))
报错
No Json serializer found for type models.Subscription.type. Try to
implement an implicit Writes or Format for this type.
这很奇怪,因为 Writes 对象定义在上面的一行。因此,我试图将它显式传递给 toJson 方法:
Ok(Json.toJson(Subscription)(subWrites))
它给了我一个不同的错误,这部分解释了为什么现有的 Writes 对象不适合:
type mismatch;
found:
play.api.libs.json.Writes[models.Subscription]
required:
play.api.libs.json.Writes[models.Subscription.type]
但是,我不明白这个错误的性质以及 models.Subscription.type
是什么。
我曾经在另一个例子中做过类似的事情,而且效果很好。
任何帮助将不胜感激。
您正在尝试序列化类型 Subscription
,而不是您存储为值 subscription
的请求正文。尝试用 Ok(Json.toJson(subscription))
.
替换最后一行
我是 Scala 和 Play 的新手,我想就这个简单的例子寻求帮助。我试图自己寻找解决方案,但没有成功。 我正在尝试从 Mastering Play Framework for Scala 一书中做这个例子,那本关于扩展 Json 解析器(第 29-30 页)的例子。
我使用的环境是:
斯卡拉: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))
报错
No Json serializer found for type models.Subscription.type. Try to implement an implicit Writes or Format for this type.
这很奇怪,因为 Writes 对象定义在上面的一行。因此,我试图将它显式传递给 toJson 方法:
Ok(Json.toJson(Subscription)(subWrites))
它给了我一个不同的错误,这部分解释了为什么现有的 Writes 对象不适合:
type mismatch;
found: play.api.libs.json.Writes[models.Subscription]
required: play.api.libs.json.Writes[models.Subscription.type]
但是,我不明白这个错误的性质以及 models.Subscription.type
是什么。
我曾经在另一个例子中做过类似的事情,而且效果很好。
任何帮助将不胜感激。
您正在尝试序列化类型 Subscription
,而不是您存储为值 subscription
的请求正文。尝试用 Ok(Json.toJson(subscription))
.