nik*_*ers 5 json scala playframework playframework-2.0
我是Play的新手!&Scala,但我正在尝试创建一个服务,将JSON请求映射到Map [String,JsObject](或Map [String,JsValue],我不确定区别),然后输出一个列表密钥递归地通过地图(最好是树).
但我有开始的问题:
def genericJSONResponse = Action(parse.json) {
request => request.body
var keys = request.keys
Ok("OK")
}
Run Code Online (Sandbox Code Playgroud)
我期望这里的密钥是从请求中填充密钥,但当然,它不会编译.鉴于上述说明,我该如何处理?
在此先感谢您帮助Scala noob :-)
聂
rom*_*usz 15
JsValue是所有JSON值的基类.JsObject是的一个亚型JsValue(具有沿JsNull,JsUndefined,JsBoolean,JsNumber,JsString,和JsArray).如果不清楚,请查看JSON规范:http://json.org/
如果您知道正文请求中的JSON是JSON对象(与上面列出的其他类型相反),您可以对其进行模式匹配:
def genericJSONResponse = Action(parse.json) { request =>
request.body match {
case JsObject(fields) => Ok("received object:" + fields.toMap + '\n')
case _ => Ok("received something else: " + request.body + '\n')
}
}
Run Code Online (Sandbox Code Playgroud)
fields.toMap是你想要的类型:Map[(String, JsValue)]所以你可以递归地使用map或collect处理对象的键.(顺便说一句,你可以fields直接使用,因为它是一个Seq[(String, JsValue)]并支持map并且collect也是如此).
| 归档时间: |
|
| 查看次数: |
8679 次 |
| 最近记录: |