指定したキー-値ペアを含むオブジェクトの削除

この DataWeave の例では、オブジェクトの配列から一連のキー-値ペアを含むすべてのオブジェクトを削除します。 開始する前に、DataWeave バージョン 2 (​%dw 2.0​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​%dw 1.0​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。

この例では、次の関数を使用します。

  • filter​ では、入力配列のオブジェクトを反復処理し、式の結果として ​true​ を返すオブジェクトが含まれる配列を返します。入力配列の各オブジェクトには、一連のキー-値ペアが含まれます。式では ​contains​ 関数と ​not​ 演算子が使用されます。

  • contains​ では、​dropThese​ 変数で指定されたキー-値ペアを識別します。この変数は、削除するキー-値ペアが含まれるオブジェクトの配列です。

    not​ では、​dropThese​ で識別されたキー-値ペアを ​filter​ で最終出力から削除するように、​contains​ 関数の結果を否定します。(​not​ がない場合、結果は​不要な​キー-値ペアのみが含まれるオブジェクトの配列になります)。

DataWeave スクリプト:
%dw 2.0
var dropThese = [
{"type" : "secondary", "space" : "rgb"},
{"type" : "primary", "space" : "cmyk"}
]
output application/json
---
payload filter (not (dropThese contains {"type": $."type", "space": $."space"}))
入力 XML ペイロード:
[
    {"sequence": "1", "color": "red", "type": "primary", "space": "rgb"}
    {"sequence": "2", "color": "green", "type": "primary", "space": "rgb"},
    {"sequence": "3", "color": "blue", "type": "primary", "space": "rgb"},
    {"sequence": "4", "color": "yellow", "type": "secondary", "space": "rgb"},
    {"sequence": "5", "color": "magenta", "type": "secondary", "space": "rgb"},
    {"sequence": "6", "color": "cyan", "type": "secondary", "space": "rgb"},
    {"sequence": "7", "color": "cyan", "type": "primary", "space": "cmyk"},
    {"sequence": "8", "color": "magenta", "type": "primary", "space": "cmyk"},
    {"sequence": "9", "color": "yellow", "type": "primary", "space": "cmyk"},
    {"sequence": "10", "color": "red", "type": "secondary", "space": "cmyk"},
    {"sequence": "11", "color": "green", "type": "secondary", "space": "cmyk"},
    {"sequence": "12", "color": "blue", "type": "secondary", "space": "cmyk"}
]
出力 XML:
[
  {
    "sequence": "1",
    "color": "red",
    "type": "primary",
    "space": "rgb"
  },
  {
    "sequence": "2",
    "color": "green",
    "type": "primary",
    "space": "rgb"
  },
  {
    "sequence": "3",
    "color": "blue",
    "type": "primary",
    "space": "rgb"
  },
  {
    "sequence": "10",
    "color": "red",
    "type": "secondary",
    "space": "cmyk"
  },
  {
    "sequence": "11",
    "color": "green",
    "type": "secondary",
    "space": "cmyk"
  },
  {
    "sequence": "12",
    "color": "blue",
    "type": "secondary",
    "space": "cmyk"
  }
]