使用Play JSON合并超过22个字段的case class格式

9

我试图将格式拆分为多个元组,以便它可以处理案例类中超过22个字段的情况。然而,我遇到了一个错误“值and不是play.api.libs.json.Format的成员”。我该如何合并一个案例类的多个格式?

val fields1to2: Format[(Int, String)] = (
  (__ \ "a").format[Int] and
  (__ \ "b").format[String]
).tupled

val fields3to4: Format[(Boolean, List[Int])] = (
  (__ \ "c").format[Boolean] and
  (__ \ "d").format[List[Int]]
).tupled

implicit val hugeCaseClassReads: Format[Huge] = (
  fields1to2 and fields3to4 // "value and is not a member of play.api.libs.json.Format"
) {
  case ((a, b), (c, d)) =>  
    Huge(a, b, c, d)
}

1
嗨,你有没有机会做你想做的事情? - pkozlov
2个回答

1

如果您不仅限于使用Play-JSON,则可以尝试 Play-Json扩展库:

import ai.x.play.json.Jsonx
implicit val hugeCaseClassReads: Format[Huge] = Jsonx.formatCaseClass

但更方便、安全、高效的选择是使用jsoniter-scala - 它内置支持具有大量字段的 case classes。


0

添加这些导入解决了我的问题。在您的情况下,只导入第一个应该可以解决问题。

import play.api.libs.functional.syntax._

import play.api.libs.json.{Json, Reads, _}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接