2015-02-23 10 views
5

Otrzymuję błąd podczas używania złożonego obiektu jako atrybutu innego obiektu w Json.format.Brak domyślnego formatu dla MyClass dostępnego przy użyciu Json.format

Mam dwie klasy: RoleDTO i EmailInvitationDTO. EmailInvitationDTO ma RoleDTO. Tak, oświadczyłem:

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] } 

Dostaję błąd: Brak formatu niejawny dla RoleDTO dostępne. Nawet jeśli deklarują roleFormat zmienną w linii przed emailInvitationFormat:

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

ktoś wie, czego brakuje? Dzięki.

+0

To pomogłoby, gdybyśmy wiedzieli, co te zajęcia wyglądał. –

+0

edytował pytanie z dodatkowymi informacjami. – adheus

+1

Konieczne jest stosowanie opcji "roleFormat" i "emailInvitationFormat". –

Odpowiedz

5

Musisz podać niejawne roleFormat w deklaracji obiektu EmailInvitationDTO. Makro Json.format szuka niejawnych formatów Json podczas kompilacji, w przeciwnym razie nie będzie miał pojęcia, jak odczytać/zapisać RoleDTO w swoim EmailInvitationDTO.

Więc trzeba następującą linię w zakresie przed utworzeniem emailInvitationFormat:

implicit val roleFormat = Json.format[RoleDTO] 
+0

Zrobiłem to, błąd wciąż się dzieje (patrz edycja). – adheus

+0

oh, mam to teraz. Zapomniałem niejawnego identyfikatora. Wybacz, stary. – adheus

+2

Znaleziono to, próbując rozwiązać inny problem, ale post dał mi podpowiedź, co było nie tak z moim kodem, więc na wypadek, gdyby ktoś inny wpadł na ten sam problem co ja, warto zaznaczyć, że implikacje muszą być zadeklarowane w odpowiedniej kolejności, więc RoleDto musi nadejść przed EmailInvocationDto. – redwulf

Powiązane problemy