2016-11-23 34 views
1

我有以下JSON結構:從一個地方移動JsValue到另外一個JsObject

{ 
    "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 

但是,這並沒有給我我想要的東西。

+0

沒有嘗試什麼嗎?你能分享你的代碼嗎? –

回答

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) 
相關問題