---
schema_version: "1"
id: f6090f4599a4c96fae131cbc238f880c773717c7772d40acbfc3ad16bed1c3d5
title: 項目の再グループ化
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.6/dataweave-cookbook-regroup-fields.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-regroup-fields
source_site: docs.mulesoft.com
content_type: documentation
content_hash: e15811c17a04562a6f4c81fba839f5a7cbc308b23af4e6108f3329f7e426e8c4
description: MuleSoft Documentation Site
release: "2.6"
latest: false
---
# 項目の再グループ化

これらの DataWeave の例では、ある項目に基づいてグループ化されている入力を取得し、別の項目に基づいてデータをグループ化する新しい構造に変換します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。

両方の例で、次の関数を使用します。

- `subject`​ で項目を整理する ​`groupBy`
- 入力の項目を新しい階層にマップする ​`mapObject`​ および ​`map`​。

## [](#例-xml-から-json)例: XML から JSON

DataWeave スクリプト:

```dataweave
%dw 2.0
output application/json
---
classrooms: payload..*teacher groupBy $.subject mapObject ((teacherGroup, subject) -> {
   class: {
     name: subject,
     teachers: { (teacherGroup map {
       teacher:{
           name: $.name,
           lastName: $.lastName
       }
     })
   }
  }
})
```

入力 XML ペイロード:

```xml
<school>
    <teachers>
        <teacher>
            <name>Mariano</name>
            <lastName>De Achaval</lastName>
            <subject>DW</subject>
        </teacher>
        <teacher>
            <name>Emiliano</name>
            <lastName>Lesende</lastName>
            <subject>DW</subject>
        </teacher>
        <teacher>
            <name>Leandro</name>
            <lastName>Shokida</lastName>
            <subject>Scala</subject>
        </teacher>
    </teachers>
</school>
```

出力 JSON:

```json
{
  "classrooms": {
    "class": {
      "name": "DW",
      "teachers": {
        "teacher": {
          "name": "Mariano",
          "lastName": "De Achaval"
        },
        "teacher": {
          "name": "Emiliano",
          "lastName": "Lesende"
        }
      }
    },
    "class": {
      "name": "Scala",
      "teachers": {
        "teacher": {
          "name": "Leandro",
          "lastName": "Shokida"
        }
      }
    }
  }
}
```

## [](#例-json-から-json)例: JSON から JSON

この DataWeave の例では、JSON オブジェクトの階層を変更します。出力では、​`language`​ で項目をグループ化し、各コースの参加者の名前が含まれる新しい要素 ​`attendees`​ を追加します。

DataWeave スクリプト:

```dataweave
%dw 2.0
output application/json
---
{
    "langs" :
        payload.langs groupBy $.language
            mapObject ((nameGroup, language) -> {
                 (language): {
                    "attendees" : nameGroup map {
                        name: $.name
                    }
                 }
            })
}
```

入力 JSON ペイロード:

```json
{
  "langs": [
    {
      "name": "Alex",
      "language": "Java"
    },
    {
      "name": "Kris",
      "language": "Scala"
    },
    {
      "name": "Jorge",
      "language": "Java"
    }
  ]
}
```

出力 JSON:

```json
{
  "langs": {
    "Java": {
      "attendees": [
        {
          "name": "Alex"
        },
        {
          "name": "Jorge"
        }
      ]
    },
    "Scala": {
      "attendees": [
        {
          "name": "Kris"
        }
      ]
    }
  }
}
```

## [](#関連する例)関連する例

- [データのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map)
- [複数の入力の参照](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-reference-multiple-inputs)
- [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-define-function-to-flatten-list)
- [複数の配列要素のグループ化](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-zip-arrays-together)

## [](#関連情報)関連情報

- [DataWeave の型](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-types)
- [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-selectors)
- [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook)