私はSCALA
を初めて利用しています。API
をPLAY
とSLICK
で開発する予定です。Scalaでjsonフォーマットのフォームから配列を取得するには?
私は次のようになどのWebリクエストを経由してフォームから配列(JSON形式のすべての値が整数である)フェッチつもりです: -
リクエストデータ:
{"ids": [1,2,3,4,5,6,7,8,9]}
今、私は希望をフォームの配列データを取得します。したがって、私のコントローラにフォームを宣言しました: -
case class IdsForm(ids: Array[Int])
private val idsForm: Form[IdsForm] = Form(
mapping(
"ids" -> ????
)(IdsForm.apply)(IdsForm.unapply)
)
今、その配列のすべての要素を印刷しますか?したがって、次のように関数を宣言: -
def getIds() = Action.async(parse.json) {
implicit request => idsForm.bind(request.body).fold(
formWithErrors => Future.successful(BadRequest(formWithErrors.toString)),
form => {
val ids = form.ids
// Print all the array elements
for (x <- ids) {
println(x)
}
val responseBody = Json.obj(
"status" -> 200,
"message" -> Json.toJson("Successfully printed")
)
Ok(responseBody)
}
)
}
私のコードに"ids" -> ????
の代わりに置くために何を、私に知らせてください。単一の番号の場合は私は"id" -> number
を出しました。私はあなたがそれを行う方法の例を持っているHere ...あなたはJSONを提出するフォームを使用してはならないものを置く代わりに"ids" -> ????
あなたは 'Action(parse.json [MyData])'を実行でき、playは自動的にjsonを検証することに注意してください。そのような方法では、(解析エラーがデフォルトのエラーページに渡され、htmlとしてレンダリングされる)レスポンスに対するコントロールが少なくなります。これは 'BodyParser'の' validate'メソッドを使って独自のバージョンの 'parse.json'を作ることで緩和できます(詳細はhttps://www.playframework.com/documentation/2.5.x/api/scala/indexです)。 .html#play.api.mvc.BodyParser @ validate [B](f:A =%3E [play.api.mvc.Result、B])(implicitec:scala.concurrent.ExecutionContext):play.api.mvc。 BodyParser [B]) – handler