【问题标题】:Move JsValue from one place to another in a JsObject在 JsObject 中将 JsValue 从一个位置移动到另一个位置
【发布时间】:2016-11-23 15:38:48
【问题描述】:

我有以下 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

但这并没有给我想要的。

【问题讨论】:

  • 你有什么尝试吗?你能分享你的代码吗?

标签: json scala playframework play-json


【解决方案1】:

没有移动转换,只有单个转换(复制+删除)。所以你需要将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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多