假设我有一些来自我们的API客户端的参数:
val params = (request \ "params")
我想filter
他们并删除某些键/值。就像我得到的那样:
{
"foo": "bar",
"hello": "world"
}
我想将其过滤到
{
"foo": "bar"
}
这是我的WIP代码,但是,正如更高级的Scala人可能会马上告诉它,它不起作用。
val params = (request \ "params").get.as[List[JsObject]]
val blacklistedParams = Seq("foo")
val approvedParams = params.filter((param: JsObject) => {
!blacklistedParams.contains(param)
})
第一行总是失败。我尝试过各种类型的.get.as
,但总是会出错。我仍然是Scala的新手,也是一般的类型。
答案 0 :(得分:0)
我想我想出了办法:
val params = (request \ "params").get.as[Map[String, JsValue]]
val blacklistedParams = Seq("foo")
val approvedParams = params.filter((param) => {
!blacklistedParams.contains(param._1)
})
我对此方法的唯一烦恼是._1
。对于我来说,对于下一个人来说,这是关键词/ val对的关键,这一点并不十分清楚。
答案 1 :(得分:0)
您可以使用val filtered = (request \ "params").as[JsObject] - "hello"
def index = Action{
val json = Json.obj(
"params" -> Json.obj(
"foo" -> "bar",
"hello" -> "world"))
val filtered = (json \ "params").as[JsObject] - "hello"
Ok(filtered)
}
完整示例:
{
foo: "bar"
}
输出:
column def