3

我正在尝试为包含单个属性的案例类创建隐式 JSON 读取,但我收到错误“读取 [Nothing] 不符合预期类型”。这是代码:

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它的工作......

4

1 回答 1

11

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)}
}

这是因为当前宏实现的限制。你可以在这里阅读更多信息:Pacal 是这个 API 的作者

于 2016-11-24T13:37:15.013 回答