如何检查Scala中的JsValueLookups中是否存在某些键

时间:2016-08-19 22:26:23

标签: json scala playframework

我是Scala的新手(我从未使用过Java)。我正在开展一个有这个代码的项目

  def doAccountUpdate(account: db.models.Account, config: JsObject, job: JsValue) : JsValue = {
    val params = job \ "params"
    Account.update(account, config, params)
    Json.obj("account" -> account.toJson())
  }

这里的参数是来自客户端的参数,例如浏览器,移动应用程序等。该代码调用另一个更新我们的数据库并将更新发送给第三方合作伙伴的功能(Account.update)。 JSON看起来像:

...
identity" : {
    "name" : {
        "givenName" : "Rdlbnl0",
        "familyName" : "Smith",
        "legalName" : "Rdlbnl0 Smith"
    },
contact" : {
    "address" : {
        "street" : "1234 N Main St",
        "city" : "Portland",
        "state" : "OR"
    },
...

我的任务是从客户端发送具有更新值的JSON块。因此,举例来说,如果更新givenNamefamilyNamelegalName,我会发送整个"身份"阻止,但不是联系。

如果我正在编写JavaScript(我最强的语言),那么代码可能会像

一样
var params = [
    "givenName"
];

var hasUpdatedName = params.some(function(v) {
    return ["givenName", "familyName", "legalName"].indexOf(v) != -1;
});

// => hasUpdatedName == true

一旦我知道哪些存在,我就可以验证价值是不同的,但是弄清楚哪些键存在,就像我的JS例子一样,我很难弄明白。

0 个答案:

没有答案