繁体   English   中英

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

[英]Play framework: JSON Reads for a single-attribute case class

我正在尝试为包含单个属性的 case 类创建一个隐式的 JSON Reads,但我收到错误“Reads[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它可以工作......

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 的作者

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM