2011-07-07 19 views
2

私はlift-json 2.3とScala 2.8.1を使用してjsonドキュメントを操作しています。次の文書では、単一のノードを削除したいと考えています。lift-jsonを使用して子ノードを削除します

{ 
    "units": { 
    "1": { 
     "id":"1", 
     "name":"one", 
     "tenants": { 
     "1" : { 
      "id": "1", 
      "name":"x" 
     }, 
     "2" : {  // node I want removed 
      "id": "2", 
      "name":"y" 
     } 
     } 
    } 
    "2": { 
     "id":"2", 
     "name":"two", 
     "tenants": { 
     "1" : { 
      "id": "1", 
      "name":"x" 
     }, 
     "2" : { 
      "id": "2", 
      "name":"z" 
     } 
     } 
    } 
    } 
} 

私は、removeメソッドでノードを削除することができます知っている:私は文書全体が変更必要、

val js2 = js \ "units" \ "1" \ "tenants" remove { 
    case JField(id, _) => id == "2" 
    case _ => false 
} 

しかし。

答えて

4

削除は、ASTノードをJNothingに変換することによって行われます。これを行うにはいくつかの機能があります。 '変換'。しかし、この場合、「置き換え」が最もうまくいくように見えます。

js.replace("units" :: "1" :: "tenants" :: "2" :: Nil, JNothing) 
+0

完全に置き換えられませんでした。正確に私が必要としたもの。 –

関連する問題