Spielen Sie Framework JSON Reader und benutzerdefinierte JSErrors

Ich versuche, ein JSON zu lesen, das die folgenden vom Client kommenden Parameter haben könnte

{
   "email" : "[email protected]",
   "password" : "XXXX",
   "facebookToken": "XXXXXXXXXXX"
}

DasfacebookToken könnte null oder nicht vorhanden sein, in welchem ​​Fall dieE-Mail Passwort sollte gefüllt werden, und umgekehrt.

Ich habe Probleme beim Erstellen dieses Readers. Bisher habe ich Folgendes:

val loginEmail = (
  ( __ \ "email").read[String] and
  ( __ \ "password").read[String]
)((email: String, password: String) => new User(email, password))

val loginFacebook = (
  ( __ \ "facebookToken").read[String]
)((facebookToken : String) => new User(facebookToken))

val loginReader(RequestBodyJson) = (
    (RequestBodyJson).read[User](loginEmail) or
    (RequestBodyJson).read[User](loginFacebook)
)

Kann mir jemand zeigen, wie man das richtig macht?

Ich möchte auch, dass JSError mit benutzerdefinierten Nachrichten zurückgegeben wird. Wenn beispielsweise das FacebookToken nicht vorhanden ist und ein Fehler mit der E-Mail ("E-Mail war ungültig") anstelle des allgemeinen Fehlers "/ facebookToken-Pfad nicht gefunden" aufgetreten ist.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage