Play 2.1(Json.format [...])中的实验性“初始”特征仅适用于案例分类(请参阅here)。我如何编写隐含于特质的自定义格式。我有以下结构:Play 2.1 Json序列化特征
sealed trait Plan {
def id: String
def name: String
def apps: Int
def users: Int
def testruns: Int
def price: Int
def prio: Int
}
以下是扩展特质计划的案例类。
case class Start(
id: String = "start",
name: String = "Start",
apps: Int = 1,
users: Int = 1,
testruns: Int = 10,
price: Int = 99,
prio: Int = 30) extends Plan
case class Pro(
id: String = "pro",
name: String = "Pro",
apps: Int = 2,
users: Int = 5,
testruns: Int = 25,
price: Int = 299,
prio: Int = 20) extends Plan
case class Premium(
id: String = "premium",
name: String = "Premium",
apps: Int = -1,
users: Int = -1,
testruns: Int = -1,
price: Int = 799,
prio: Int = 10) extends Plan
现在我需要在Plan伴侣对象中编写自定义隐式格式val。我尝试过:
object Plan {
implicit val planFormats = (
(__ \ "id").format[String] and
(__ \ "name").format[String] and
(__ \ "apps").format[Int] and
(__ \ "users").format[Int] and
(__ \ "testruns").format[Int] and
(__ \ "price").format[Int] and
(__ \ "prio").format[Int]
)(Plan.apply, unlift(Plan.unapply))
}
但是,特质没有适用或不适用的方法。在Play 2.1中为json序列化提供隐式val的正确方法是什么?
THX,有意义。在这个例子中,应用程序的方法如何?对不起,我还是斯卡拉新手。 – 2013-05-06 15:51:37
unapply完全相反 - 从案例类创建一个元组。只需在REPL中尝试一下,例如'Start.unapply _'创建一个从开始到参数n元组选项的函数。 – 2013-05-06 17:21:19
谢谢,它的作品。 – 2013-05-06 19:08:41