2014-11-03 66 views
0

當我使用JSON工作,如果JSON無效,我在格式發送錯誤:統一的錯誤消息

error: { error: { obj.email: [{args: "", msg: "error.email"}] } //1 

但使用JSON驗證器,我有一個非標準的方法,這驗證數據(例如,如果電子郵件存在於數據庫中)。 如何統一所有發送json形式錯誤的方法(1)?

與動作例如控制器:

implicit val loginReads: Reads[Login] = (
    (__ \ "email").read[String](email) and 
    (__ \ "password").read[String] 
)(Login.apply _) 


def login() = Action { request => 
    request.body.asJson match { 
    case Some(login) => login.validate[Login] fold (
     err => BadRequest(Json.toJson(Map("error" -> JsError.toFlatJson(err)))), 
     result => if (!isPresentInDb(result.email)) { 
     //how to handle error and send it as json error form: "error" -> JsError.toFlatJson(err) 

     } else { 
     //success 
     }    
    ) 

    case None => //bad request 
    } 
} 

//login class 
case class Login(email: String, password: String) 

回答

0

三個選項:

  1. 創建與JsError.toFlatJson想要什麼(?JsError的列表)的對象,並與他們稱之爲
  2. 創建你自己的實用程序方法,將採取你自己的種類/類型的驗證錯誤,併產生預期的json結構
  3. 提供你自己的序列化JsErrors和你自己的錯誤消息,你會想要的json結構