case class 参数的值不是 Serializable 的成员
value of case class parameter is not a member of Serializable
我正在尝试为 Json 结构构建一个验证器,此时我已经有了如下内容:
读取定义
case class SubTaskConfigElement(name: String)
case class MultiSelectConfig(subTasks: Seq[SubTaskConfigElement])
implicit val subTaskConfigElementReads: Reads[SubTaskConfigElement] =
(__ \ "name").read[String](minLength[String](0)).map(SubTaskConfigElement)
implicit val multiSelectConfigReads: Reads[MultiSelectConfig] = (
(__ \ "subTasks").read[Seq[SubTaskConfigElement]]
).map(MultiSelectConfig)
我有一个单元测试如下:
val configJson = Json.parse(
"""
|{
| "subTasks": [
| { "name": "Sub Task 1" },
| { "name": "Sub Task 2" },
| { "name": "Sub Task 3" }
| ]
|}
""".stripMargin)
val valid = configJson.validate[MultiSelectConfig] getOrElse JsError
logger.info(valid + "")
valid must beAnInstanceOf[MultiSelectConfig]
valid.subTasks must beAnInstanceOf[List[SubTaskConfigElement]]
在测试的最后一行执行测试时出现错误:
[error] /app/process-street/test/validation/widget/config/FormFieldWidgetSpec.scala:29: value subTasks is not a member of Serializable
[error] valid.subTasks must beAnInstanceOf[Seq[SubTaskConfigElement]]
IntelliJ 还将它识别为一个问题:"Cannot resolve symbol subTasks"
为什么会这样?我想念什么?
谢谢。
问题出在这一行:
val valid = configJson.validate[MultiSelectConfig] getOrElse JsError
valid
的类型被推断为 Serializable
,因为这是 MultiSelectConfig
和 JsError
的共同父类型。都是 case 类 和 case 类 自动继承自 `Serializable.
我正在尝试为 Json 结构构建一个验证器,此时我已经有了如下内容:
读取定义
case class SubTaskConfigElement(name: String)
case class MultiSelectConfig(subTasks: Seq[SubTaskConfigElement])
implicit val subTaskConfigElementReads: Reads[SubTaskConfigElement] =
(__ \ "name").read[String](minLength[String](0)).map(SubTaskConfigElement)
implicit val multiSelectConfigReads: Reads[MultiSelectConfig] = (
(__ \ "subTasks").read[Seq[SubTaskConfigElement]]
).map(MultiSelectConfig)
我有一个单元测试如下:
val configJson = Json.parse(
"""
|{
| "subTasks": [
| { "name": "Sub Task 1" },
| { "name": "Sub Task 2" },
| { "name": "Sub Task 3" }
| ]
|}
""".stripMargin)
val valid = configJson.validate[MultiSelectConfig] getOrElse JsError
logger.info(valid + "")
valid must beAnInstanceOf[MultiSelectConfig]
valid.subTasks must beAnInstanceOf[List[SubTaskConfigElement]]
在测试的最后一行执行测试时出现错误:
[error] /app/process-street/test/validation/widget/config/FormFieldWidgetSpec.scala:29: value subTasks is not a member of Serializable
[error] valid.subTasks must beAnInstanceOf[Seq[SubTaskConfigElement]]
IntelliJ 还将它识别为一个问题:"Cannot resolve symbol subTasks"
为什么会这样?我想念什么?
谢谢。
问题出在这一行:
val valid = configJson.validate[MultiSelectConfig] getOrElse JsError
valid
的类型被推断为 Serializable
,因为这是 MultiSelectConfig
和 JsError
的共同父类型。都是 case 类 和 case 类 自动继承自 `Serializable.