JSクライアントの残りのAPIは、intとstringの両方をいくつかのフィールドの値として送ることができます。ここでPlayフレームワークJSONの読み込み:Stringまたは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)
}
}
場合、私はint型の値でJSON値を送信する場合、それは[OK]を動作します。しかし、field1またはfield2が文字列( "123"、 "456")の場合、それは失敗します。なぜなら、request.body.validateはIntを期待しているからです。
しかし、問題は、JSクライアントが入力フィールドから値を送信し、入力フィールドが文字列に変換されることです。
intまたは文字列を処理する最も良い方法は何ですか? (この場合、両方のケースでjsonをdtoに変換する必要があります)
再生時には、 'ValidationError'の代わりに' JsonValidationError'を使います。 – ulric260