---
schema_version: "1"
id: f2ec268e936ff5a2ee12378ce13289389cdc460ef74cfde5f650b4fc706c0039
title: Pluck​ 関数を使用したキー-値ペアの抽出
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.8/dataweave-cookbook-pluck.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-pluck
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 78fffb744106e95cfb7bed27498a50ff6ec81643d8a179f3e1be7884e4d09842
description: MuleSoft Documentation Site
release: "2.8"
latest: false
---
# `Pluck`​ 関数を使用したキー-値ペアの抽出

キー-値ペアを操作する DataWeave 関数 (​[entriesOf](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-entriesof)​、​[keysOf](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-keysof)​、​[valuesOf](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-valuesof)​ など) に加えて、​[pluck](https://docs.mulesoft.com/jp/dataweave/2.8/dw-core-functions-pluck)​ を使用することもできます。以下の Mule アプリケーションの例では、DataWeave ​`pluck`​ 関数を使用し、JSON ペイロードからキー-値ペアを抽出して Mule イベント変数に保存します。その際、変数名をキー、その値を対応する値として使用します。

Mule アプリケーションは次のコンポーネントで構成されます。

- フローをトリガーする Scheduler コンポーネント
- JSON ペイロードを設定する Set Payload コンポーネント
- `pluck`​ 関数でキー-値ペアを抽出して配列に配置することで、Set Payload コンポーネントから読み取ったコンテンツを変換する Transform Message コンポーネント
- 配列を反復処理する For Each スコープコンポーネント
- 変数名をキー、変数値を値として JSON 配列に設定する Set Variable コンポーネント
- 反復ごとに変数結果を出力する Logger コンポーネント

![Studio キャンバスでの Mule アプリケーションフローの例](/mulesoft/current/ja-jp/dataweave/2.8/_images/dataweave-cookbook-pluck-examples.png)

アプリケーション XML ファイル (読みやすいように再書式設定):

```xml
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
      xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
      <flow name="json-varsFlow" >
            <scheduler doc:name="Scheduler" >
	          <scheduling-strategy >
		        <fixed-frequency frequency="10000"/>
                  </scheduling-strategy>
	    </scheduler>
	    <set-payload value='{"firstName": "jason", "job": "engineer", "dept":"support"}'
	                 doc:name="Set Payload"
			 mimeType="application/json" />
	    <ee:transform doc:name="Transform Message" >
	          <ee:message >
		        <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---

payload pluck (value,key)  -> {
	Test:{
		Key: key,
		Value: value
	}
}]]></ee:set-payload>
                  </ee:message>
            </ee:transform>
	    <foreach doc:name="For Each"
	             collection="#[payload.Test]">
	                <logger level="INFO" doc:name="Logger" message="#[payload]" />
		        <set-variable value="#[payload.Value]"
		                      doc:name="Set Variable"
				      variableName="#[payload.Key]"/>
		        <logger level="INFO"
		                doc:name="Logger"
			        message="#[vars[payload.Key]]"/>
            </foreach>
      </flow>
</mule>
```

Transform Message では次の DataWeave スクリプトを設定します。

```dataweave
%dw 2.0
output application/json
---
payload pluck (value,key)  -> {
  Test: {
    Key: key,
    Value: value
  }
}
```

Mule アプリケーションが次の JSON ペイロードを使用して実行される場合:

```json
{
  "firstName": "jason", "job": "engineer", "dept":"support"
}
```

DataWeave の変換結果は次のようになります。

```json
[
  {
    "Test": {
      "Key": "firstName",
      "Value": "jason"
    }
  },
  {
    "Test": {
      "Key": "job",
      "Value": "engineer"
    }
  },
  {
    "Test": {
      "Key": "dept",
      "Value": "support"
    }
  }
]
```

For Each スコープコンポーネントは変換された値を反復処理し、アプリケーションは変数結果の値を (読みやすいように再書式設定して) ログに記録します。

INFO  2022-06-22 10:11:17,864 \[\[MuleRuntime\].uber.02:
      \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\]
      \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\]
      org.mule.runtime.core.internal.processor.LoggerMessageProcessor:
      {
          "Key": "firstName",
	  "Value": "jason"
      }
INFO  2022-06-22 10:11:17,870 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\]
      \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\]
      org.mule.runtime.core.internal.processor.LoggerMessageProcessor:
      "jason"
INFO  2022-06-22 10:11:17,871 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\]
      \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\]
      org.mule.runtime.core.internal.processor.LoggerMessageProcessor:
      {
        "Key": "job",
        "Value": "engineer"
      }
INFO  2022-06-22 10:11:17,875 \[\[MuleRuntime\].uber.02:
      \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\]
      \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\]
      org.mule.runtime.core.internal.processor.LoggerMessageProcessor:
      "engineer"
INFO  2022-06-22 10:11:17,877 \[\[MuleRuntime\].uber.02:
      \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\]
      \[processor: json-varsFlow/processors/2/processors/0; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\]
      org.mule.runtime.core.internal.processor.LoggerMessageProcessor:
      {
         "Key": "dept",
	 "Value": "support"
      }
INFO  2022-06-22 10:11:17,879 \[\[MuleRuntime\].uber.02: \[jsonsample\].json-varsFlow.CPU\_INTENSIVE @5c652aa\]
      \[processor: json-varsFlow/processors/2/processors/2; event: 545f5ef0-f24e-11ec-8c92-147ddaaf4f97\]
      org.mule.runtime.core.internal.processor.LoggerMessageProcessor:
      "support"

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

- [DataWeave 形式](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-formats)
- [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook)