2017-02-07 30 views
2

上午有一个特点的Json格式在播放性状2.4

trait Role[A, B] { 
    val _id: Option[A] = None 
    val value: Option[List[B]] = None 
    val id: Option[String] = None 
    } 

和扩展特性的情况下类

case class User (value1: Option[Role] = None, value2: Option[String] = None) extends Role 

object User { 
implicit val jsonFormatter: Format[User] = Json.format[User] 
} 

而且这还不是因为错误,“没有的Json formattor为编译角色”。

我尝试了几个例子可用在stackoverflow上,在json格式化的特质没有得到工作。

回答

2

是的,这是正确的,因为当播放试图为用户做格式化,它不知道如何将Role格式化为json。

你能做到这一点,首先将是这样的:

implicit val roleFormat = Json.format[Role] 

从播放文档object User

要求:

这些宏靠对几个假设他们正在工作 与:

  • 它必须有一个伴随对象,具有应用和不应用方法
  • unapply的返回类型必须与apply方法的参数类型相匹配。
  • apply方法的参数名称必须与JSON中所需的属性名称相同。

案例类本能地满足这些要求。对于更多自定义类 或特征,您可能必须实施它们。

+0

它工作。简单而有效。谢谢@Mysterion – sowmiyaksr