私はScalaには新しく、JsValueにどのようにキー/値を追加するかを考えようとしています。 JavaScriptではSomeObject.newKey = newValue
のようなことをするかもしれません。ここに私の本当のユースケースです:Scalaの既存のJsValueにキー/値を追加する
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
に私はデータを準備中だので、DBを更新します。私が準備する必要がある項目の1つは、パスワードをAccount.update
に渡す前に暗号化することです。これはどうすればいいですか?
EDIT
これは私のために動作しませんの重複をマークされている問題は、これが彼らの例です理由を説明する:
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
が@danielnixonが示すように、あなたはこのためにJSONの変圧器を使用することができますparams
[フレームワークを再生する - JSONオブジェクトにフィールドを追加]の可能複製(http://stackoverflow.com/questions/22855710/play-framework-add-aを-field-to-json-object) – danielnixon
@danielnixonが私の場合にそれほど同じではない理由を説明するために更新されました。うまくいけば助けて –
ここでケース4と5を見てみましょう:https://www.playframework.com/documentation/2.5.x/ScalaJsonTransformers – danielnixon