在Play Framework 2.0 Scala中处理JSON请求
发布时间:2020-12-16 18:15:46 所属栏目:安全 来源:网络整理
导读:我正在尝试使用 JSON请求将数据从客户端发送到服务器. JSON请求的主体如下所示: {"upload": { "ok":"some message","assemblyId":"a9d8f72q3hrq982hf98q3" }} Play能够将请求主体识别为JSON但是当我尝试解析单个值,即“上传”对象时,Play会抱怨它无法找到指
我正在尝试使用
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显示为“请求有效负载”完全相同的内容.然而,当我尝试抓取根对象“上传”时,它失败了.并且该方法返回一个抱怨缺少参数的错误请求. 解决方法
要做asOpt [models.SomeClass],需要有一个Reads实例才能工作.
这是一个例子 case class SomeClass(ok: String,assemblyId: String) implicit object SomeClassReads extends Reads[SomeClass] { def reads(json: JsValue) = SomeClass((json "ok").as[String],(json "assemblyId").as[String]) } 您可以在以下位置了解如何实现Reads实例 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 当我的脚本断开时,如何让shell / ruby??发出噪音(让我的电脑
- 即使在unsetenv(“LD_PRELOAD”)之后,LD_PRELOAD也会影响新
- scala – 使用ProtoBuf字段的Spark,Kryo序列化问题
- bootstrap 导航改成经过显示下拉菜单
- WebService获取服务端硬件信息和客户端IP,MAC,浏览器信息,
- osx – 根目录下的复制文件在OS X El Capitan 10.11中失败
- AngularJS更改常数值,传递给单元测试的配置
- AngularJS的select
- scala – 为什么`trait X {def append [ – ]():Unit}`编译
- prestodb – 在Presto中投射unix时间