【发布时间】:2013-06-05 23:43:48
【问题描述】:
我需要一个简单的 JSON 序列化解决方案,仪式最少。所以我很高兴找到this forthcoming Play 2.2 library。这与普通案例类完美配合,例如
import play.api.libs.json._
sealed trait Foo
case class Bar(i: Int) extends Foo
case class Baz(f: Float) extends Foo
implicit val barFmt = Json.format[Bar]
implicit val bazFmt = Json.format[Baz]
但以下失败:
implicit val fooFmt = Json.format[Foo] // "No unapply function found"
我将如何为Foo 设置据称丢失的提取器?
或者您会推荐任何其他或多或少完全自动处理我的案例的独立库吗?我不在乎是在编译时使用宏还是在运行时使用反射,只要它开箱即用即可。
【问题讨论】:
-
是否缺少某些代码?是唯一定义
Foo的sealed trait Foo行吗?那你期望会发生什么?我想如果apply()和unapply()方法,Json.format将适用于常规课程。 -
播放json,以及lift json应该没问题。您会看到,您正在尝试获取特征的格式,但几乎所有提供透明序列化的库都基于案例类。只需使用案例类和模式匹配就可以了。
-
我需要能够序列化类型类。因此,我需要一种由许多案例类扩展的密封特征的格式。应该是一个相当普遍的场景。
-
自动
Json.format似乎无法使用特征,但您可以编写它们:stackoverflow.com/questions/14145432/…;另外,我偶然发现了这个问题,您可能会感兴趣:stackoverflow.com/questions/6891393/… -
@Andy 你介意分享这段代码吗?
标签: json scala playframework play-json