json - Play Framework :JSON读取单个属性的案例类

标签 json scala playframework

我正在尝试为包含单个属性的案例类创建一个隐式的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 _)
}


为什么这不起作用?如果我将额外的属性添加到case类中,并且多个.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)}
}


这是由于当前Macro实施中的限制。您可以在这里了解更多信息:Pacal is the writer of this API

关于json - Play Framework :JSON读取单个属性的案例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40786742/

相关文章:

scala - 当父类(super class)中存在具有相同类型的隐式 val 时,编译器不会生成隐式 val 的字段

javascript - 无法将数据从 Angular 应用程序发布到 Play!框架

javascript - 如何按 bool 字符串字段对 javascript 对象集合进行排序

java - Scala,参数化特征的具体实现的反射(reflect)

scala - 没有案例类的模式匹配

scala - Scala 函数中的参数列表。有人可以解释一下代码吗?

java - 用于 mysql 5.6 的 mysql-connector-java

javascript - 无法在 WordPress UI 中解析 json 字符串

javascript - JSON 对象的已知非空值的字段返回空字符串

javascript - NSDictionary 类型的 React Native JSON 值无法转换为 NSString