Я новичок в SCALA
, где я собираюсь разработать API
с PLAY
и SLICK
.Как получить массив из форматированной формы json в Scala?
Я собираюсь принести массив (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
. Я не знаю, что поставить вместо ????
в "ids" -> ????
Обратите внимание, что вы можете сделать «Action (parse.json [MyData])», и игра автоматически проверяет json. вы получаете меньше контроля над этим ответом, хотя (ошибки синтаксического анализа передаются на страницу ошибок по умолчанию и отображаются как html). это можно смягчить, создав собственную версию 'parse.json', используя метод' validate' из 'BodyParser' (подробнее: https://www.playframework.com/documentation/2.5.x/api/scala/index .html # @ play.api.mvc.BodyParser проверить [В] (е: А =% 3EEither [play.api.mvc.Result, В]) (implicitec: scala.concurrent.ExecutionContext): play.api.mvc. BodyParser [B]) – handler