如何更改嵌套Json中的值
这与类似,但情况更为复杂 考虑一个先前构造的值如何更改嵌套Json中的值,json,playframework,Json,Playframework,这与类似,但情况更为复杂 考虑一个先前构造的值 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_
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\u b”\“key\u c”\“key\u a”\“key\u a”
更改为“new\u value”
我认为对象在play.api.libs.json
中是不可变的,所以我想我实际上是在寻找原始对象的副本,其中一个值发生了变化
最好的方法是什么
我不认为这是一个病态的用例 在Javascript中,它将是一行
x.key_b.key_c.key_a.key_a = 'new_value';
我希望Scala解决方案不会更糟。您不需要修改JSON。引入语法错误并杀死整个json构造太容易了。您将json解码回本地数据结构,在那里进行修改,然后重新编码回json。@MarcB,所谓“json”,我的意思与参考问题中的意思相同,作为
play.api.libs.json
包的成员,而不是String
类型的值。