複数の配列要素のグループ化

この DataWeave の例では、イケアスタイルの家具の部品表を再構成します。入力には、並列処理される 2 つの個別の配列があり、ねじの寸法と数量が含まれます。これらは変換により、「screws」配列がタプル (寸法が含まれるタプルと対応する数量が含まれるタプル) で構成されるように並び替えられます。同じことが木製ボードにも適用されます。入力には、x の寸法と y の寸法が含まれる 2 つの配列があります。変換により、各ボードの一連のタプルに再編成されます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​DataWeave バージョン 1.2 の例​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。

次の DataWeave 関数を使用します。

  • メイン配列の要素を調べる ​map​。

  • インデックスで複数の 2 要素配列にグループ化されるように、長い配列のペアを再編成する ​zip​。

DataWeave スクリプト:
%dw 2.0
output application/json
---
payload map (item, index) ->
{
    name: item.name,
    id: item.itemID,
    screws: zip(item.screws.size, item.screws.quantity),
    measurements: zip(item.measurements.x,item.measurements.y )
}
入力 JSON ペイロード:
[
   {
    "name":"wooden-chair",
    "itemID": "23665",
    "screws":{
      "size":[4,6,10],
      "quantity":[15,8,28]
    },
    "measurements":
    {"x":[25,46, 46, 16,150,5, 100, 100, 8],
    "y":[15,4, 4, 80,3, 4, 4, 15]
    }
  },
   {
    "name":"coffee-table",
    "itemID": "14398",
    "screws":{
      "size":[3,8,10],
      "quantity":[8,12,20]
    },
    "measurements":
    {"x":[55, 48, 48, 48, 48, 30, 30, 30, 30],
    "y":[55, 40, 40, 40, 50, 4, 4, 4, 4]
    }
  }
]
出力 JSON:
[
  {
    "name": "wooden-chair",
    "id": "23665",
    "screws": [
      [
        4,
        15
      ],
      [
        6,
        8
      ],
      [
        10,
        28
      ]
    ],
    "measurements": [
      [
        25,
        15
      ],
      [
        46,
        4
      ],
      [
        46,
        4
      ],
      [
        16,
        80
      ],
      [
        150,
        3
      ],
      [
        5,
        4
      ],
      [
        100,
        4
      ],
      [
        100,
        15
      ]
    ]
  },
  {
    "name": "coffee-table",
    "id": "14398",
    "screws": [
      [
        3,
        8
      ],
      [
        8,
        12
      ],
      [
        10,
        20
      ]
    ],
    "measurements": [
      [
        55,
        55
      ],
      [
        48,
        40
      ],
      [
        48,
        40
      ],
      [
        48,
        40
      ],
      [
        48,
        50
      ],
      [
        30,
        4
      ],
      [
        30,
        4
      ],
      [
        30,
        4
      ],
      [
        30,
        4
      ]
    ]
  }
]