Play框架:JSON读取单属性案例类

时间:2016-11-24 12:43:51

标签: json scala playframework

我试图为包含单个属性的案例类隐式创建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一起加入,则可以正常运行...

1 个答案:

答案 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