1

次の JSON 構造があります。

{
  "id" : "uniqueId",
  "foo" : [1,2,3],
  "bar": {
    "frob" : "quox"
  }
}

そして、私はそれを次のものに変換したい:

{
  "id" : "uniqueId",
  "bar": {
    "frob" : "quox",
    "foo-copy" : [1,2,3]
  }
}

これを達成するための正しいplay-json 変換は何ですか?

私は次のことを試しました

val moveToObject = (__ \ 'bar ).json.update((__ \ 'foo-copy).json.copyFrom(
    (__ \ 'foo).json.pick
  ))

json.transform(moveToObject).get

しかし、それは私が望むものを私に与えません。

4

1 に答える 1

3

移動変換はなく、単一変換のみ (コピー + 削除) です。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)
于 2016-11-23T16:46:17.280 に答える