在 JsObject 中将 JsValue 从一个地方移动到另一个地方
Move JsValue from one place to another in a JsObject
我有以下 JSON 结构:
{
"id" : "uniqueId",
"foo" : [1,2,3],
"bar": {
"frob" : "quox"
}
}
我想把它转换成下面的:
{
"id" : "uniqueId",
"bar": {
"frob" : "quox",
"foo-copy" : [1,2,3]
}
}
实现此目标的正确方法是什么play-json transformation?
我试过以下方法
val moveToObject = (__ \ 'bar ).json.update((__ \ 'foo-copy).json.copyFrom(
(__ \ 'foo).json.pick
))
json.transform(moveToObject).get
但这并没有给我想要的东西。
没有移动转换,只有单个转换(复制+删除)。所以你需要将 foo
值复制到 bar\foo-copy
然后删除 foo
:
__.json.update(
(__ \ "bar" \ "foo-copy").json.copyFrom(
(__ \ "foo").json.pick
)
) andThen (__ \ "foo").json.prune
scala> res0: play.api.libs.json.JsResult[play.api.libs.json.JsObject] = JsSuccess({"id":"uniqueId","bar":{"frob":"quox","foo-copy":[1,2,3]}},/foo/foo)
我有以下 JSON 结构:
{
"id" : "uniqueId",
"foo" : [1,2,3],
"bar": {
"frob" : "quox"
}
}
我想把它转换成下面的:
{
"id" : "uniqueId",
"bar": {
"frob" : "quox",
"foo-copy" : [1,2,3]
}
}
实现此目标的正确方法是什么play-json transformation?
我试过以下方法
val moveToObject = (__ \ 'bar ).json.update((__ \ 'foo-copy).json.copyFrom(
(__ \ 'foo).json.pick
))
json.transform(moveToObject).get
但这并没有给我想要的东西。
没有移动转换,只有单个转换(复制+删除)。所以你需要将 foo
值复制到 bar\foo-copy
然后删除 foo
:
__.json.update(
(__ \ "bar" \ "foo-copy").json.copyFrom(
(__ \ "foo").json.pick
)
) andThen (__ \ "foo").json.prune
scala> res0: play.api.libs.json.JsResult[play.api.libs.json.JsObject] = JsSuccess({"id":"uniqueId","bar":{"frob":"quox","foo-copy":[1,2,3]}},/foo/foo)