I'm getting an error when using a complex object as attribute of another object on Json.format.
I have two classes: RoleDTO and EmailInvitationDTO. EmailInvitationDTO has a RoleDTO. So, I declared:
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] }
I'm getting the error: No implicit format for RoleDTO available. Even if I declare the roleFormat variable in a line before emailInvitationFormat:
object EmailInvitationDTO {
val roleFormat = Json.format[RoleDTO]
val emailInvitationFormat = Json.format[EmailInvitationDTO]
}
Anyone knows what is missing? Thanks.
You need to include an implicit
roleFormat
in yourEmailInvitationDTO
object declaration. TheJson.format
macro looks for implicit Json formats at compile time, otherwise it will have no idea how to read/write theRoleDTO
in yourEmailInvitationDTO
.So you'll need the following line in scope before creating an
emailInvitationFormat
: