Scala play!2为外部库中的类创建Json格式化程序

时间:2017-05-04 07:43:55

标签: json scala playframework

我使用https://github.com/DanielaSfregola/twitter4s,我需要阅读并解析Json中twitter4s提供的User类。

所以我尝试创建以下序列化程序:

object User {
    implicit val twitterUser: OFormat[User] = Json.format[User]
}

但这会返回No unapply or unapplySeq function found

如何为此外部类创建正确的序列化程序?

1 个答案:

答案 0 :(得分:2)

你的问题是User有很多字段(即超过22个字段)。在scala 2.10中,案例类的字段数有限制。这在2.11中消失了,但在Play!的Json.format宏中没有消失,因为它们继续支持2.10。

但是,您可以使用Json Extra,它具有不同的宏实现,并允许您超过22个字段。

如果您不喜欢这样(宏有一些限制,例如不输出OFormat),您还可以将User类拆分为两个(或更多)类,而不是22个字段,并根据这些字段构建初始字段,为Format提供一个更简单(更安全)的实现,如果你手工完成整个事情,你将需要做什么。

您还可以阅读this question,以获得进一步的解释。