【发布时间】:2017-01-07 13:55:28
【问题描述】:
我是 Scala 新手,我正在尝试弄清楚如何将键/值添加到 JsValue。在 JavaScript 中,您可能会执行类似 SomeObject.newKey = newValue 的操作。这是我的真实用例:
def doAccountUpdate(account: db.models.Account, config: JsObject, job: JsValue) : JsValue = {
val passwordParam = (job \ "params" \ "password")
if (passwordParam.toOption.isDefined) {
val password = (job \ "params" \ "password").get.as[String]
val encrypted_password = Auth.passwordEncrypt(password)
// ADD `encrypted_password`'s value TO `job \ params` so its `job \ params \ encryptedPassword`
}
Account.update(account, config, job)
}
Account.update 实际上更新了数据库,所以在我的doAccountUpdate 中我正在准备数据。我需要准备的其中一项是密码,在将其传递给Account.update之前对其进行加密。我该怎么做?
编辑
为了解释为什么这个被标记为重复的问题对我不起作用,这是他们的例子:
jsonObject.as[JsObject] + ("c" -> Json.toJson(3))
如果我在我的代码中复制它,它将如下所示:
updateJob = job.as[JsObject] + ("encryptedPassword" -> Json.toJson(encrypted_password))
但是输出:
{
"id":"...",
"params": {
"password":"Programmer2!"
},
"encryptedPassword":"$2a$10$EHnJHXh1sTORxliPocWfDuHnlRzu1YwG.kyBee.u85apCXTuLij.y"
}
注意encryptedPassword 是如何不在params 中的
【问题讨论】:
-
@danielnixon 更新以解释为什么在我的情况下它不完全相同。希望这会有所帮助
-
也许可以在这里查看案例 4 和 5:playframework.com/documentation/2.5.x/ScalaJsonTransformers
标签: json scala playframework