使用Json.format没有MyClass的隐式格式

使用Json.format没有MyClass的隐式格式,json,scala,playframework-2.0,implicit,Json,Scala,Playframework 2.0,Implicit,在Json.format上使用复杂对象作为另一个对象的属性时,我遇到了一个错误 我有两门课:RoleDTO和emailinvitationto电子邮件邀请收件人有一个角色。因此,我宣布: case class RoleDTO(id:Option[Long] = None, roleType:Int, userID:Long, fromHousingUnitID:Option[Long] = None, isAdmin:Option[Boolean] = None, fromResidentUse

在Json.format上使用复杂对象作为另一个对象的属性时,我遇到了一个错误

我有两门课:RoleDTOemailinvitationto电子邮件邀请收件人有一个角色。因此,我宣布:

case class RoleDTO(id:Option[Long] = None, roleType:Int, userID:Long, fromHousingUnitID:Option[Long] = None, isAdmin:Option[Boolean] = None, fromResidentUserID:Option[Long] = None, documentNumber:Option[String] = None, fromCondoID:Option[Long] = None)
object RoleDTO { val roleFormat = Json.format[RoleDTO] }

case class EmailInvitationDTO(firstName:String, lastName:String, email:String, role:RoleDTO)
object EmailInvitationDTO{ val emailInvitationFormat = Json.format[EmailInvitationDTO] }
我得到一个错误:RoleDTO没有隐式格式可用。即使我在电子邮件邀请格式之前的一行中声明了roleFormat变量:

object EmailInvitationDTO {
    val roleFormat = Json.format[RoleDTO]
    val emailInvitationFormat = Json.format[EmailInvitationDTO]
}

谁知道少了什么?谢谢。

您需要在
电子邮件邀请收件人
对象声明中包含隐式
角色表单
Json.format
宏在编译时查找隐式Json格式,否则它将不知道如何在
EmailInvitationTo
中读/写
RoleDTO

因此,在创建
emailInvitationFormat
之前,您需要在作用域中输入以下行:

implicit val roleFormat = Json.format[RoleDTO]

如果我们知道这些类是什么样子的话会有帮助。用更多信息编辑问题。你需要使
roleFormat
emailInvitationFormat
隐式。我做到了,错误仍在发生(请参见编辑)。哦,现在知道了。我忘记了隐式标识符。抱歉,伙计。在尝试解决另一个问题时发现了此问题,但帖子给了我一个提示,说明了我的代码有什么问题,因此,如果其他人遇到与我相同的问题,值得指出的是,隐式需要按正确的顺序声明,因此RoleDto需要在EmailInvocationDto之前。