Scala 类型检查和转换

Scala Type Check and Conversion

我有一个 request.body 进入控制器,在我对它做任何事情之前我想检查它是否是一个数组。否则将其包装在一个数组中,然后继续。

我试过了,但我对 play scala 不够熟悉,无法让它工作/找到答案。

if (request.body.isInstanceOf[Array] == false) {
  var input = Array(request.body)
}
else {
  var input = request.body
}

我的控制器是

def insertMultiple = Action.async(parse.json) {
request =>
[INSERT IF/ELSE Statement here]
    Json.fromJson[Seq[Person]](request.body) match {
      case JsSuccess(newPersons, _) =>
        val documents = newPersons.map(implicitly[collection.ImplicitlyDocumentProducer](_))

        collection.bulkInsert(ordered = true)(documents: _*).map{
          multiResult =>
            Created(s"Created ${multiResult.n} persons")
        }

      case err@JsError(_) =>
        Future.successful(BadRequest("Test"))
    }

}

试试这个:

// as long as you have an implicit Format[Person] in scope
// List[Person]
val people = r.body.validate[JsArray].asOpt.getOrElse {
  Json.arr(r.body)
}.as[List[Person]]