不能应用于 (play.api.mvc.AnyContent)
cannot be applied to (play.api.mvc.AnyContent)
当我尝试将我的请求正文内容转换为 json 时,发生了这种情况..
代码:
def addItem() = Action { implicit request =>
val content:AnyContent = request.body
val res = Json.parse(content)
Ok("done")
}
sbt 编译信息:
**overloaded method parse with alternatives:
[error] (input: Array[Byte])play.api.libs.json.JsValue <and>
[error] (input: java.io.InputStream)play.api.libs.json.JsValue <and>
[error] (input: String)play.api.libs.json.JsValue
[error] cannot be applied to (play.api.mvc.AnyContent)
[error] val res = Json.parse(content)**
我想知道为什么我不能将我的内容转换为 json?
AnyContent
提供辅助方法 asJson
:
ef addItem() = Action { implicit request =>
val content: AnyContent = request.body
val res: Option[JsValue] = content.asJson
Ok("done")
}
或者,您可以直接使用 Play 的正文解析器:
def addItem() = Action(parse.json) { implicit request: Request[JsValue] =>
val content: JsValue = request.body
// ...
Ok("done")
}
如果内容不是JSON,它会自动给出 HTTP 400。
见https://www.playframework.com/documentation/2.8.x/ScalaBodyParsers
当我尝试将我的请求正文内容转换为 json 时,发生了这种情况..
代码:
def addItem() = Action { implicit request =>
val content:AnyContent = request.body
val res = Json.parse(content)
Ok("done")
}
sbt 编译信息:
**overloaded method parse with alternatives:
[error] (input: Array[Byte])play.api.libs.json.JsValue <and>
[error] (input: java.io.InputStream)play.api.libs.json.JsValue <and>
[error] (input: String)play.api.libs.json.JsValue
[error] cannot be applied to (play.api.mvc.AnyContent)
[error] val res = Json.parse(content)**
我想知道为什么我不能将我的内容转换为 json?
AnyContent
提供辅助方法 asJson
:
ef addItem() = Action { implicit request =>
val content: AnyContent = request.body
val res: Option[JsValue] = content.asJson
Ok("done")
}
或者,您可以直接使用 Play 的正文解析器:
def addItem() = Action(parse.json) { implicit request: Request[JsValue] =>
val content: JsValue = request.body
// ...
Ok("done")
}
如果内容不是JSON,它会自动给出 HTTP 400。
见https://www.playframework.com/documentation/2.8.x/ScalaBodyParsers