---
schema_version: "1"
id: 2ea7442c01cfc78fcda8c67bea80194eec949b398035094b544aefe7338ff4e7
title: オブジェクトのマップ
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.6/dataweave-cookbook-map-an-object.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map-an-object
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 1c7f61b2d24f138f6404fb8883a53e8b4ffa13532409b259ae7c47b2c1134259
description: MuleSoft Documentation Site
release: "2.6"
latest: false
---
# オブジェクトのマップ

以下の DataWeave の例では、​`mapObject`​ 関数を使用してオブジェクトのキーと値を反復処理します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。

## [](#最初の例)最初の例

この例では、​`map`​ と ​`mapObject`​ の両方の関数を使用して、入力を反復処理し、すべてのキーを大文字に設定します。

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

- 「books」配列の要素を調べる ​`map`​。
- 配列の各オブジェクトのキーと値を調べる ​`mapObject`​。
- 各キーを大文字に設定する ​`upper`​。

DataWeave スクリプト:

```dataweave
%dw 2.0
output application/json
---
items: payload.books map (item, index) -> {
      book: item mapObject (value, key) -> {
      (upper(key)): value
      }
}
```

入力 JSON ペイロード:

```json
{
    "books": [
      {
        "-category": "cooking",
        "title":"Everyday Italian",
        "author": "Giada De Laurentiis",
        "year": "2005",
        "price": "30.00"
      },
      {
        "-category": "children",
        "title": "Harry Potter",
        "author": "J K. Rowling",
        "year": "2005",
        "price": "29.99"
      },
      {
        "-category": "web",
        "title":  "XQuery Kick Start",
        "author": [
          "James McGovern",
          "Per Bothner",
          "Kurt Cagle",
          "James Linn",
          "Vaidyanathan Nagarajan"
        ],
        "year": "2003",
        "price": "49.99"
      },
      {
        "-category": "web",
        "-cover": "paperback",
        "title": "Learning XML",
        "author": "Erik T. Ray",
        "year": "2003",
        "price": "39.95"
      }
    ]
}
```

出力 JSON:

```json
{
  "items": [
    {
      "book": {
        "-CATEGORY": "cooking",
        "TITLE": "Everyday Italian",
        "AUTHOR": "Giada De Laurentiis",
        "YEAR": "2005",
        "PRICE": "30.00"
      }
    },
    {
      "book": {
        "-CATEGORY": "children",
        "TITLE": "Harry Potter",
        "AUTHOR": "J K. Rowling",
        "YEAR": "2005",
        "PRICE": "29.99"
      }
    },
    {
      "book": {
        "-CATEGORY": "web",
        "TITLE": "XQuery Kick Start",
        "AUTHOR": [
          "James McGovern",
          "Per Bothner",
          "Kurt Cagle",
          "James Linn",
          "Vaidyanathan Nagarajan"
        ],
        "YEAR": "2003",
        "PRICE": "49.99"
      }
    },
    {
      "book": {
        "-CATEGORY": "web",
        "-COVER": "paperback",
        "TITLE": "Learning XML",
        "AUTHOR": "Erik T. Ray",
        "YEAR": "2003",
        "PRICE": "39.95"
      }
    }
  ]
}
```

## [](#2-番目の例)2 番目の例

この例では、​`mapObject`​ 関数を使用して、ペイロードで ​`groupBy`​ を使用した結果であるオブジェクトのキーと値を反復処理します。入力ペイロードに ​`FirstName`​、​`LastName`​、および ​`Age`​ キーの値が同じオブジェクトがある場合、DataWeave スクリプトでそれらのオブジェクトが CSV ファイルの 1 行に変換されます。それらのオブジェクトの残りの ​`Team Name`​ および ​`Role`​ キーの値は、CSV の 1 行上では ​`:`​ で連結されます。

入力 JSON ペイロード:

```json
[
{
"Sr.No.": 1,
"FirstName": "Charles",
"LastName": "Lock",
"Age": 40,
"Team Name": "Scrum team 1",
"Role": "developer"
},
{
"Sr.No.": 2,
"FirstName": "Josh",
"LastName": "Rodriguez",
"Age": 45,
"Team Name": "architecture",
"Role": "SA"
},
{
"Sr.No.": 3,
"FirstName": "Josh",
"LastName": "Rodriguez",
"Age": 45,
"Team Name": "technology",
"Role": "advisor"
},
{
"Sr.No.": 4,
"FirstName": "Josh",
"LastName": "Rodriguez",
"Age": 35,
"Team Name": "development",
"Role": "developer"
},
{
"Sr.No.": 5,
"FirstName": "Jane",
"LastName": "Rodriguez",
"Age": 30,
"Team Name": "architecture",
"Role": "SA"
},
{
"Sr.No.": 6,
"FirstName": "Jane",
"LastName": "Rodriguez",
"Age": 30,
"Team Name": "Scrum team 1",
"Role": "developer"
},
{
"Sr.No.": 7,
"FirstName": "Josh",
"LastName": "Lee",
"Age": 42,
"Team Name": "Scrum team1",
"Role": "developer"
}
]
```

上記の入力の例では、​`Sr.No. 2`​ と ​`Sr.No. 3`​、​`Sr.No. 5`​ と ​`Sr.No.` ​\` 6\`​ はそれぞれ名、姓、年齢が同じであるため、同じ人物です。一方、​`Sr.No. 4`​ は名と姓は同じですが、年齢が違うため、別の人物です。

DataWeave スクリプト:

```dataweave
output application/csv
---
valuesOf(
    payload
        groupBy ((item, index) -> (
            item.FirstName ++ item.LastName ++ item.Age))
        mapObject ((value, key, index) ->
            (index): {
                "Sr.No.": value."Sr.No." joinBy ":",
                "FirstName": value.FirstName[0],
                "LastName": value.LastName[0],
                "Age": value.Age[0],
                "Team Name": value."Team Name" joinBy ":",
                "Role": value.Role joinBy ":"
            })
)
```

DataWeave スクリプトはオブジェクトのキー ​`FirstName`​、​`LastName`​、​`Age`​ の繰り返される値をキー-値 ​`Sr.No. 2`​ と ​`Sr.No. 3`​、​`Sr.No. 5`​ と ​`Sr.No. 6`​ でマージします。これらの値は CSV の 1 行上では ​`,`​ で区切られます。それらのオブジェクトの ​`Team Name`​ および ​`Role`​ の値は、CSV の 1 行上では ​`:`​ で連結されます。

出力 CSV:

```CSV
Sr.No.,FirstName,LastName,Age,Team Name,Role
1,Charles,Lock,40,Scrum team 1,developer
2:3,Josh,Rodriguez,45,architecture:technology,SA:advisor
4,Josh,Rodriguez,35,development,developer
5:6,Jane,Rodriguez,30,architecture:Scrum team 1,SA:developer
7,Josh,Lee,42,Scrum team1,developer
```

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

- [DataWeave を使用したデータのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map)
- [オブジェクト要素の配列としてのマップ](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-map-object-elements-as-an-array)
- [データの抽出](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-extract-data)
- [XML から JSON への変換](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-perform-basic-transformation)
- [キーの名前の変更](https://docs.mulesoft.com/jp/dataweave/2.6/dataweave-cookbook-rename-keys)

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

- [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)