在我的Playframework scala应用程序中,我有以下模型:
case class ProcessTemplatesModel(
id: Option[Int] = None,
title: String,
version: String,
createdat: Option[String],
updatedat: Option[String],
deadline: Option[Date],
status: Option[String],
comment: Option[String],
checked: Option[Boolean],
checkedat: Option[Date],
approved: Option[Boolean],
approvedat: Option[Date],
deleted: Boolean,
approveprocess: Int,
trainingsprocess: Option[Int],
previousVersion: Option[Int],
originTemplate: Option[Int],
client: Int,
approveProcessInstance: Option[Int],
responsible: Option[Seq[UserModel]],
accountable: Option[Seq[UserModel]],
consulted: Option[Seq[UserModel]],
informed: Option[Seq[UserModel]])
object ProcessTemplatesModel {
implicit val processFormat = Json.format[ProcessTemplatesModel]
}
今天我添加了approveProcessInstance: Option[Int],
现在我在编译时遇到了这个错误:No unapply or unapplySeq function found
...在这一行:implicit val processFormat = Json.format[ProcessTemplatesModel]
在这种情况下我的失败是什么?
事先知道答案 0 :(得分:4)
22个值是播放JSON的最大值,您可以使用第三方库来增加数量。
这里是Play源代码中的问题线程: https://github.com/playframework/playframework/issues/3174
可能的解决方案之一: https://github.com/xdotai/play-json-extensions
来自build.sbt
libraryDependencies ++= Seq(
cache,
filters,
ws,
// More than 22 fields in Json
"ai.x" %% "play-json-extensions" % "0.8.0"
)
对于Play 2.6,您需要使用版本10:
"ai.x" %% "play-json-extensions" % "0.10.0"
然后,在带有JSON的文件中:
import ai.x.play.json.Jsonx
implicit val processFormat = Jsonx.formatCaseClass[ProcessTemplatesModel]
更多详情:https://github.com/xdotai/play-json-extensions#create-explicit-formatter
答案 1 :(得分:1)
另一个想法是将模型分解为细粒度模型并具有它的组成。这样,您就不必再导入另一个库了!