rest api的JS客戶端可以發送int和string作爲某個字段的值。播放框架JSON讀取:如何讀取字符串或Int?
{
field1: "123",
field2: "456"
}
{
field1: 123,
field2: 456
}
這裏是一個案例類遊戲動作到JSON請求主體應轉換:
case class Dto(field1: Int, field2: Int)
object Dto {
implicit val reads = Json.reads[Dto]
}
def create = Action.async(BodyParsers.parse.json) { implicit request =>
request.body.validate[Dto].map {
dto => someService.doStuff(dto).map(result => Ok(Json.toJson(result)))
}.recoverTotal {
e => jsErrorToBadRequest(e)
}
}
在情況下,如果我發送的JSON值與int類型,它工作正常。但是,如果field1或field2是字符串(「123」,「456」),它會失敗,因爲request.body.validate需要Int。
但問題是,JS客戶端從輸入字段發送值,並且輸入字段被轉換爲字符串。
處理整數或字符串的最佳方法是什麼? (所以這個動作應該在兩種情況下將json轉換爲dto)
在play 2.6使用'JsonValidationError'而不是'ValidationError' – ulric260