这类似于How to replace a JSON value in Play,但处于更复杂的情况。
考虑一个普遍构建的价值。
val x = Json.obj(
"key_a" -> "value_a",
"key_b" -> Json.obj(
"key_a" -> 0,
"key_b" -> 1,
"key_c" -> Json.obj(
"key_a" -> Json.obj(
"key_a" -> "value_a",
"key_b" -> 2
),
"key_b" -> "value_b",
"key_c" -> "value_c"
),
"key_c" -> "value_c",
...
)
假设我想将x \ "key_b" \ "key_c" \ "key_a" \ "key_a"
更改为"new_value"
。
我认为对象在play.api.libs.json
中是不可变的,所以我认为我实际上正在寻找原始的副本,其中一个值已更改。
这样做的最佳方式是什么?
我不认为这是一个病态用例。
在Javascript中,它将是一行
x.key_b.key_c.key_a.key_a = 'new_value';
我希望Scala解决方案不会更糟糕。