我正在尝试使用 JSON 请求将数据从客户端发送到服务器。JSON 请求的正文如下所示:
{
"upload":
{
"ok":"some message",
"assemblyId":"a9d8f72q3hrq982hf98q3"
}
}
Play 能够将请求正文识别为 JSON,但是当我尝试解析单个值(即“上传”对象)时,Play 抱怨它找不到指定的参数。
Scala方法如下:
def add(course:Long) = withAccount { account => implicit request =>
println()
println(request.body) // output: AnyContentAsJson({"upload":{"ok":"ASSEMBLY_COMP...
request.body.asJson.map { json =>
println()
println(json) // output: {"upload":{"ok":"ASSEMBLY_COMPLETED","assemb...
(json \ "upload").asOpt[models.SomeClass].map { upload =>
Ok("Got upload")
}.getOrElse {
BadRequest("Missing parameter [upload]")
}
}.getOrElse {
BadRequest("Expecting Json data")
}
}
我无法理解上述代码失败的原因。该方法可以轻松地将请求正文映射到 json 对象。“println(json)”命令打印出与 Chrome 显示的“请求有效负载”完全相同的内容。然而,当我尝试抓取根对象“上传”时,它失败了。该方法返回一个错误的请求,抱怨缺少参数。