filterTree

filterTree(value: Any, criteria: (value: Any, path: Path) -> Boolean): Any

指定された ​criteria​ に基づいて入力内のノードの値またはパスを絞り込みます。

この関数では、入力内のノードを反復処理します。​criteria​ は入力内の値またはパスに適用できます。​criteria​ が ​true​ に評価される場合、ノードは出力に留まります。​false​ の場合、この関数によってノードが除外されます。

DataWeave バージョン 2.4.0 で導入されました。

パラメーター

名前 説明

value

絞り込む値。

criteria

ノードを絞り込むかどうかを判断する式。

次の例では、さまざまな入力での ​filterTree​ の動作を示します。 出力はデモを目的とした ​application/dw​ となります。

ソース

%dw 2.0
import * from dw::util::Tree
output application/dw
---
{
    a: {
          name : "",
          lastName @(foo: ""): "Achaval",
          friends @(id: 123): [{id: "", test: true}, {age: 123}, ""]
        } filterTree ((value, path) ->
            value match  {
                            case s is String -> !isEmpty(s)
                            else -> true
                          }
    ),
    b: null filterTree ((value, path) -> value is String),
    c: [
            {name: "Mariano", friends: []},
            {test: [1,2,3]},
            {dw: ""}
        ] filterTree ((value, path) ->
            value match  {
                            case a is Array ->  !isEmpty(a as Array)
                            else -> true
                        })
}

出力

{
  a: {
    lastName: "Achaval",
    friends @(id: 123): [
      {
        test: true
      },
      {
        age: 123
      }
    ]
  },
  b: null,
  c: [
    {
      name: "Mariano"
    },
    {
      test: [
        1,
        2,
        3
      ]
    },
    {
      dw: ""
    }
  ]
}