我试图为包含单个属性的案例类隐式创建JSON读取,但我收到错误"读取[Nothing]并不符合预期类型&#34 ;.这是代码:
import play.api.libs.functional.syntax._
import play.api.libs.json.Reads._
import play.api.libs.json.{JsPath, Json, Reads}
case class Feedback(message: String)
object Feedback {
implicit val reads: Reads[Feedback] = (
(JsPath \ "message").read[String](maxLength[String](2000))
)(Feedback.apply _)
}
为什么这不起作用?如果我为案例类添加了额外的属性,并且多个.read
调用与and
一起加入,则可以正常运行...
答案 0 :(得分:8)
Json组合器不适用于单场案例类。
您可以执行以下操作:
import play.api.libs.json.Reads._
import play.api.libs.json.{__, Reads}
case class Feedback(message: String)
object Feedback {
implicit val reads: Reads[Feedback] = (__ \ "message")
.read[String](maxLength[String](2000)).map {message => Feedback(message)}
}
由于当前Macro实现的限制。您可以在此处详细了解:Pacal is the writer of this API