从前端开始,我正在使用以下数据执行jQuery POST
:
[{name: "Kevin", age: 100, favoriteOperator:"="}]
此POST会点击/sample
网址。
在我的控制器中,我使用以下方式阅读POST的正文:
def submit = Action { implicit request =>
val maybeRequestAsFormUrlEncoded: Option[Map[String, Seq[String]]] =
request.body.asFormUrlEncoded
打印出地图显示:
Map([{"name" : "Kevin", "age" : 100, "favoriteOperator" :" -> List("}])
为什么我的favoriteOperator
显示为" -> List("
而不是"="
?
答案 0 :(得分:1)
非常确定asFormUrlEncoded
期望输入如下:
queryString=abc,def
anotherQueryString=blabla
然后转换为您的地图:
Map("queryString" -> List("abc", "def"), "anotherQueryString" -> List("blabla"))
(我实际上不确定abc,def
和blabla
是否真的被反序列化为一个列表,这个想法就是因为你的样本中有一个列表而来。无论如何,重要的是asFormUrlEncoded
期望键值对以=符号分隔,这就是为什么你的字符串被拆开的原因。另见http://en.wikipedia.org/wiki/Url_encoding。
您可能希望查看Json反序列化器,因为您的请求具有Json格式: http://www.playframework.com/documentation/2.2.x/ScalaJson