【发布时间】:2017-10-03 18:47:41
【问题描述】:
我已经看到了一些涉及臭名昭著的“22 个字段/参数”问题的其他问题,这是 Scala V here 和 here。但是,根据这个blog post,case class 中的 22 个参数限制似乎已修复;至少在语言方面。
我有一个case class,我想加载任意(读取:> 22)个值,稍后将使用 Play 库将其读入 JSON 对象。
看起来像这样:
object L {
import play.api.libs.json.Reads. _
import play.api.libs.functional.syntax._
implicit val responseRead: Reads[L] = (
MyField1.jsPath.Read[MyField1.t] and
MyField2.jsPath.Read[MyField2.t] and
...
MyField35.jsPath.Read[MyField35.t]
) (L.apply _)
}
case class L(myField1: MyField1.t, myField2: MyField2.t, ... myField35: MyField35.t)
问题是在编译时,Scala 抱怨case class 中有超过 22 个参数。 (具体来说:在对象定义的最后一行,当编译器尝试构建时,我得到:“实现将函数限制为 22 个参数”。)我目前使用的是 Scala v2.11.6,所以我认为 这不是语言问题。这让我觉得 Play 库没有更新他们对 Read 的实现。
如果是这样,那么我想最好的办法是将相关字段分组到元组中并通过 JSON API 传递元组?
【问题讨论】:
标签: json scala playframework case-class